M365 Show -  Microsoft 365 Digital Workplace Daily
M365 Show with Mirko Peters - Microsoft 365 Digital Workplace Daily
Unlock Blazing SharePoint Sites With ONE Setting
0:00
-22:41

Unlock Blazing SharePoint Sites With ONE Setting

Ever wonder why your SharePoint pages still crawl, even after you moved everything to the cloud? You already have files on your CDN, but users are still seeing slow load times. Today, we're cutting through Microsoft’s documentation to show you the one setting pros use to unlock consistent speed—no magic, just smart configuration. Let’s build a SharePoint experience your users actually want to use.

Spotting the Real Bottlenecks in SharePoint Online

If you’ve ever flipped every modern toggle Microsoft suggests, only to watch your SharePoint Online site load like it’s still running on an old on-prem server, you’re not alone. Most admins expect the cloud will erase years of slow load times and confusing bottlenecks, almost like magic. But SharePoint Online brings its own set of speed bumps—and one of the sneakiest offenders is hiding in plain sight: your static files.

The reality is, moving to the cloud definitely upgrades your backend. But speed still takes a hit if you don’t keep an eye on the basics. Static files—think images, CSS, and all those little JavaScript helpers—traffic through SharePoint every time your page loads. Doesn’t matter if it’s an intranet homepage or a tiny team site for project managers. Every user gets the full loadout, whether they need it or not. And the worst part? It’s all happening behind the scenes. That’s why page loads stall even when your network and server metrics look fine. SharePoint’s cloud backbone takes care of your documents and security, but it doesn’t get picky about how or where it grabs your static files.

Let’s walk through what’s actually slowing you down. The hidden bottlenecks aren’t your classic SharePoint features—they’re the document library clutter and all the assets stashed under Site Assets and Site Pages. If you dig into any decently used site, odds are you’ll find a graveyard of leftover images for events that ended years ago, test JavaScript from a power user’s weekend experiment, or old PowerPoint assets uploaded and never removed. And while Microsoft tells you to keep your document libraries organized, they don’t tell you that loading all these files every session is quietly wasting your users’ time.

Now, figuring out which files are dragging things down doesn’t take a forensic IT degree. You just need the browser’s developer tools—Chrome DevTools or Microsoft Edge Developer Tools do the trick. Fire them up, go to the Network tab, and reload your SharePoint site. You’ll see a waterfall of requests. Watch for anything labeled as an image, style sheet, or script. If something’s taking more than a few hundred milliseconds to load—or worse, a few seconds—you’ve found a culprit. Microsoft’s own SharePoint Site Usage reports can also give you a clearer picture of what assets get hit most, but browser tools let you pinpoint the precise files, right down to the rogue PNG buried in a subfolder.

Here’s an example I run into all the time. One marketing team loved branding so much they uploaded thirty different versions of their logo, trying tweaks for a launch. None of the old ones ever got deleted. Now, every single page on their SharePoint Online intranet loaded each logo in sequence, thanks to a web part that didn’t filter assets by current use. That meant each page pulled thirty unnecessary images—each one a few hundred kilobytes—on every reload for every user. Multiply that by a few dozen users and you’re not only slowing down the experience, you’re chewing through bandwidth you probably intended for actual work.

Let’s call this what it is: wasted data, wasted money, and users quietly getting frustrated. When teams ignore these static files, it piles up. SharePoint’s not shy about serving files—you give it a folder full of PNGs, and it delivers, every single time. Users start working a little slower, pages lag, and eventually, someone decides SharePoint is “just slow,” when in reality, you’re just delivering bloat with every click.

It gets worse when you look at the research. Studies estimate that static resources often make up as much as 70% of the initial page load time for complex sites. That means for most users, their browser spends more time pulling down images, stylesheets, and scripts than loading the guts of the SharePoint page itself. And this problem doesn’t shrink as you add more users; if anything, it gets worse. Especially as site creators stick new files in Site Assets with every update and nobody ever audits what actually stays relevant.

So why keep letting this drag your site down? By shining a spotlight on which static files are burning through your bandwidth and time, you finally get leverage for performance gains that normal SharePoint tweaks just won’t deliver. It’s not about another PowerShell script or rolling out the latest SharePoint feature—it’s about knowing which stuff your users actually need, and which stuff is just digital debris.

Once you know where your big files are hiding, the real gains kick in. Think of it like a spring cleaning for your site’s performance. Suddenly, tuning SharePoint isn’t about crossing your fingers every time there’s an update or a new wave of users. It’s about actionable, measurable changes. Find your slow files, and you set the foundation for a site that actually benefits from all that cloud power you’re paying for.

The next challenge—once you know the villains in your asset library—is getting those files out to users faster. And that’s where Microsoft’s built-in CDN options start to show their real value.

Unlocking the Microsoft 365 CDN: Private vs. Public, Without the Headaches

You can’t go three pages into a Microsoft 365 admin guide without tripping over the word “CDN,” but if you ask most admins what changes when they enable it for SharePoint Online, you usually get a shrug or a cautious “It should make things faster, right?” The switch is right there in the documentation, but the real story starts when you decide whether to use Microsoft’s built-in CDN, and then figure out if you want it private, public, or both. And that’s exactly where most people get nervous and back away slowly—because nobody wants to be the one who accidentally makes their company logo, or far worse, their confidential templates, available to the Internet.

The reality is, Microsoft packages a CDN right into the SharePoint Online ecosystem. In theory, you just enable it, set some origins, and your static files go global. No extra fees or wild patch Tuesday surprises. The catch is, almost every admin either ignores it, fearing some mystery security or compliance tripwire, or goes ahead and ends up in a mess of broken images and confused permissions. This isn’t just guesswork—Microsoft’s own telemetry has shown low adoption for the SharePoint CDN compared to how many tenants actually exist. So why all the hesitation? It’s not because the technology is unfinished. It’s because CDN configuration is anything but fire-and-forget.

Now, when you drill down, you hit the public vs. private CDN choice. On paper, they look nearly identical—both promises faster delivery for all that bloat you found earlier in those asset libraries. But their actual behaviors couldn’t be more different. The public CDN blasts assets out to anyone who can guess the URL, no authentication required. That’s perfect for generic branding images, scripts that aren’t confidential, or other assets you plaster across multiple sites and want to load everywhere at speed. The private CDN, though, locks things down. Only authenticated users inside your Microsoft 365 tenant with the right SharePoint permissions can get to those files, and access checks happen near the edge—where Microsoft’s infrastructure sits, closer to your users. Sounds safe and sounds smart—until you realize a single misstep in configuration means you either lose speed, or lose control.

So, how does this magic actually work behind the scenes? Let’s break it down. The Microsoft 365 CDN acts as a distributed cache. You pick which SharePoint doc libraries, folders, or containers count as “origins” —these are the sources for CDN caching. Once configured, requests for those files—images, JS, you name it—get intercepted by Microsoft’s edge servers sprinkled across their datacenter network. With the public CDN, these servers don’t check who’s asking; as long as someone knows the special URL, they get the file, and usually in a fraction of the time it would take SharePoint’s classic document pipeline. For private CDN requests, though, Microsoft still checks if the requesting user has access, reducing round-trips to verify permissions but not handing over the keys to everyone.

Enabling the CDN is mostly a PowerShell affair. You run commands like Set-SPOTenantCdnEnabled, tell it public or private, add origins, and let propagation do its thing. But here’s where the tension ramps up—what you pick as an origin matters. A lot. If you include a folder with sensitive stuff thinking “it’s just graphics,” surprises can follow. Microsoft recommends starting small—use libraries specifically meant for public assets, double check what’s actually inside, and don’t get overeager. More than once, I’ve seen someone plop the entire Site Assets folder into the public CDN pool, only for a script-savvy user to find HR drafts and private templates buried right beside the harmless logos.

That’s not theoretical, either. A large regional bank contacted us in a panic after a public CDN rollout led to some confidential workflow diagrams briefly surfacing in Google search results. They thought they’d scoped it to a safe folder, but a buried PDF uploaded by a temp years earlier was still live—and soon was getting pinged from outside IPs. The fix? Remove the origin, force a CDN purge, update user education, and set up ongoing audits. But for about forty-eight hours, anyone with the right URL could see sensitive process docs.

If you’re following Microsoft’s own setup steps, you’ll get a basic implementation, but pitfalls stack up fast. Permissions aren’t always obvious, and asset types trip people up—a forgotten SVG file won’t get picked up if your CDN config never included that extension. Propagation also isn’t instant; sometimes, you set a new origin or change files, and users either see the old version or nothing for several hours depending on the edge node. And branding? One broken CDN mapping can send users back to the SharePoint blue default logo, instantly undermining all that migration effort.

What actually works in real-world, multi-site SharePoint tenants usually looks messier than the documentation. Microsoft’s best practices lean toward using private CDN for most cases and public only for absolute must-share files. In complex organizations, you sometimes need to mix both—granularly scoping origins and rigorously checking the contents every month. You end up scripting audits, setting alerts for new file types, even scheduling dummy loads from different regions to make sure the right versions are hitting the edge.

But when it works, the payoff lands immediately. Browser dev tools show images and scripts coming from URLs that load twice as fast, users stop asking “why does it take forever to load our homepage,” and you see your SharePoint pages finally snapping into place instead of crawling image-by-image.

Of course, not everyone wants to limit themselves to Microsoft’s CDN. Some teams need global domains, extra custom rules, or special security wrappers. That means layering on external CDNs—and, yes, even more ways things can fall apart if you’re not careful.

Integrating External Public CDNs: Asset URLs, Caching, and Chaos Control

The moment you mention public CDNs like Cloudflare or Azure Front Door, the conversation always shifts from “Will this speed things up?” to “How much is this going to break?” Everyone loves the idea of global speed and one consistent experience, no matter where users click in from. But SharePoint and external CDNs rarely play nice right out of the box. It turns out, simply pasting a CDN in front of your assets is like bolting a turbo onto a minivan—it might feel fast for a minute, but soon enough, everything under the hood starts rattling.

For a lot of businesses, the driver is brand consistency—having your logos and design elements hit the browser looking exactly the same from New York to Singapore. Or you’re building a custom app on top of SharePoint and need assurances that your code and images won’t randomly lag in one region. Microsoft 365’s built-in CDN helps to a point, but if you need extra rules, closer customization, or integrations with security tools, you wind up turning to Azure Front Door, Akamai, or Cloudflare for that extra edge. Here’s where life gets interesting: your SharePoint asset URLs, which once looked like a nice predictable path from your tenant root, suddenly take on a life of their own. The paths change, query parameters get added, and endpoints bounce between Microsoft and your chosen CDN. Any code or script in your SharePoint solution that points directly to site asset URLs starts behaving differently—sometimes working as expected, and sometimes, in ways that make you want to roll back the whole project.

Let’s get concrete. When an external CDN sits in front of SharePoint, your static assets—think about the CSS that keeps your layout from turning into a pile of Times New Roman links—start routing through hostname rewrites. An image URL that started out as yourcompany.sharepoint.com/sites/sales/SiteAssets/logo.png might morph into cdn.yourcompany.com/sites/sales/SiteAssets/logo.png. But here’s the rub: any custom code, web parts, or third-party solutions need to know about these changes. If you’re referencing absolute paths or using site-relative URLs in scripts or page templates, links will break. Even worse, if old URLs end up cached on a user’s machine while the new CDN version is being rolled out, you get a mix of old and new assets fighting for control. And when SharePoint Online updates its domain endpoints or paths (which happens more often than you think), your rewrites have to keep up.

Let’s talk asset versioning. Say your design team swaps out the homepage CSS for a refresh and pushes it to Site Assets. In a normal SharePoint world, that’s it—you publish, users get the latest file, maybe after a quick browser refresh. In an external CDN setup, unless you tell the CDN to discard the old cached version, users worldwide could keep seeing the stale file for hours or even days. I’ve watched this firsthand on an intranet relaunch where some users raved about the new look, but others grumbled that headers looked broken or buttons didn’t match. Turns out, a missed cache purge on the CDN meant the new CSS didn’t reach everybody at once. Cue the “is it working for you?” team chats and a lot of manual troubleshooting.

So how do you manage asset URLs and keep everyone on the same version? It takes some planning. The best practice is to use versioned URLs, often by appending a query string or a file stamp, like logo.png?v=202406. Any time someone updates a file, you bump the version—either as part of a build process or with a simple naming convention. That way, browsers and CDNs always fetch the latest asset, not the stale one sitting in cache purgatory. For the bigger picture, map all your asset origins deliberately. Avoid pointing the CDN at giant folders you barely review—curate smaller, purpose-built containers for only what must be globally cached.

Cache control brings its own set of rituals. Manual purges are necessary when you push urgent changes, but they’re boring to maintain and easy to overlook. Automating these purges by tying them to your deployment tool or using API calls from Azure DevOps or Power Automate helps keep things tidy. If your SharePoint workflow is more manual, adding a checklist before every major update—“Did we clear the CDN cache?”—might spare you hours of head-scratching after complaints start coming in.

There’s a tradeoff every time you bring in a public CDN. You gain control and speed, dramatically so for distributed teams, but every new configuration step opens up another spot for something to break. Miss a rewrite rule and someone’s logo doesn’t load. Forget a version suffix and a script change goes unnoticed for days. Yet, when you get the mapping right, when versioning is baked into every asset, and cache invalidation is automated or at least a habit, the experience transforms. Pages snap in worldwide, custom web parts act as intended, and helpdesk tickets about layout glitches disappear.

Moving to external CDNs with SharePoint means acting as both network admin and librarian—curating what’s delivered, ensuring it’s fresh, and updating your processes every time a new web part or asset goes live. It's a balancing act, but with discipline and the right set of routines, you get performance and reliability, not chaos. But even bulletproof CDN configs need eyes on them as your content grows and user patterns shift—otherwise, speed gains can vanish and you’ll find yourself back at square one.

Keeping Your SharePoint Fast: The CDN Maintenance Checklist

If you’ve tuned your SharePoint CDN and thought, “Finally, everything’s fast,” that feeling never lasts as long as you’d hope. It’s a moving target. Add some new image-heavy pages, hand off document library management to an ambitious department, or tweak the look and feel as part of a larger M365 rebrand—suddenly, things can crawl again. The truth is, CDN performance isn’t a light switch you flip. It’s more like a garden. It needs ongoing attention, regular trimming, and a watchful eye on anything new that grows. That’s the spot where admins trip up most. The initial burst of speed from enabling a CDN can quietly fade as your site evolves and those perfectly-tuned settings drift.

We’ve all heard the complaints. “SharePoint was really fast last month. What happened?” When users notice, things have usually been sliding for a while. Changes mount up. Maybe your team adds ten new videos to a homepage carousel, or someone starts uploading 4K images for downloadable resources. Migration projects and content redesigns are notorious for breaking what used to work. Your traffic patterns can shift almost overnight if a marketing campaign gets traction, and the asset requests start piling up from locations you didn’t expect. All these things chip away at your finely-tuned throughput, so the only way to keep SharePoint humming is to stay ahead of it with a maintenance routine.

The first step is regular, honest verification that your CDN is even doing its job. The Microsoft 365 Admin Center shows you CDN status, but you need to go deeper. Check that the right origins are still designated for CDN delivery and that no surprise folders have fallen off. Review the current state with PowerShell if needed—origins can get removed, new ones can get missed entirely, or someone with admin access can make a change and forget to update the team. Next, dig into origin health. Microsoft won’t warn you if a document library set as a CDN origin suddenly becomes read-only or gets renamed, but the result is always slower file delivery and confused users getting old versions.

Now, the real signals come from cache analytics. Track your cache hit and miss ratios. Every admin knows cache hits mean lightning loads, while misses reroute the request back to SharePoint, eating up time and bandwidth. If those ratios start dipping, it’s a clue that assets are either being updated too often, CDN TTL settings need tweaking, or extra files are getting dumped in your library without being properly versioned. Browser developer tools help here—refresh a page, check the network tab, and look for where each asset is coming from. Ideally, images and scripts should load from CDN endpoints, not directly from SharePoint’s core domain. Spot a few requests bypassing the CDN, and you have the start of a new fix-it list.

Then, permissions. Sharing a library with the right people might seem like a “set it and forget it” situation, but tenant permissions and SharePoint library access can drift as roles change or group memberships are updated. Auditing permissions for CDN origins is one of those low-glamour, high-impact tasks. If files meant to be public stay private, users complain that the site is broken or incomplete. Worse, if confidential assets are slipping through to the public edge, you have a compliance nightmare brewing, often without any clear warning. It’s not flashy, but walking through permissions audits every quarter can catch these lurking issues before they go public.

The right tools make audits and monitoring bearable. Microsoft 365 Admin Center is the headquarters for basic status and site-wide reporting, while Edge or Chrome developer tools are your ground-level, asset-by-asset microscope. For more ambitious setups—think hybrid CDN deployments—a third-party monitoring solution can track origin health, CDN node distribution, end-user load times, and even send alerts when key performance numbers slip. Don’t ignore PowerShell scripting, either—regular reports on cache status or origin inventory can help spot issues in bulk, and automate some of the routine.

One company we worked with hit a sudden, unexplained slowdown. Users from APAC started grumbling that site load times jumped from two seconds to nearly ten, seemingly overnight. It looked like network latency at first, but a quick check of their CDN health revealed a different story. Their main static asset library had quietly hit a storage quota. The CDN kept pointing to it, but as new assets tried to upload, SharePoint started refusing them and serving up old cached files—or worse, partial loads. The issue lingered for days because the team assumed everything was working as usual, and frontend monitoring only showed that files weren’t updating, not that underlying storage was full. A regular quota check would have caught it before the user complaints ever landed.

All this comes back to regular audits. Whether it’s misconfigured origins, long-forgotten branding files that should have aged out, or permissions that have quietly changed, these are the details that impact speed. Routines pay off—scripted reports every week, asset reference audits each quarter, scheduled permission reviews, and active cache monitoring are the backbone of a healthy SharePoint CDN environment. It’s about building habits, not just reacting to the next fire.

Automation turns this from an overwhelming list into background noise. Set up scripts to pull origin inventories, trigger alerts when a cache drops below a certain hit rate, or flag when permissions change on a key folder. Power Automate, Azure Logic Apps, or even simple PowerShell tasks go a long way. Couple that with third-party monitoring tools to get real-time insights into global performance and you can prevent most issues before users notice.

With a clear, consistent checklist, you hold the line on performance. Gone are the days of “SharePoint is just slow”—now, if load times dip, you can trace it back to a concrete issue and act. No frantic guesswork or vague troubleshooting. And the best part is, your users stay happy and productive, rarely even needing to think about what powers their fast experience. So, let’s talk about one last move you can make right now to start seeing better results, even before your next team sync.

Conclusion

If you think of CDN as just another compliance item, you’re missing what SharePoint users really want: a site that responds instantly and never makes them wait for basic information. The difference between a thriving site and one that’s constantly ignored is often hiding in how you handle those static assets. Start by rooting out the slow files, enable the right delivery—public or private—and keep revisiting your setup as your site and team evolve. The fastest SharePoint sites aren’t accidental. The more you dig, the more you’ll notice new patterns and discover what’s quietly slowing you down next.

Discussion about this episode

User's avatar