CDN market share in Poland, and what it does to TTFB

Cloudflare answers a third of 7,785 .pl homepages, yet most pass HTML to the origin, and their phone TTFB matches sites without a CDN. Cached ones are faster.

Reading time: 11 min readPublished:

Cloudflare is the CDN of the Polish web: its headers show on 33% of the homepages of 7,785 .pl sites in the Tranco list of popular domains (opens in a new tab), which is 87% of every site showing any CDN. Far behind and close to each other come Amazon CloudFront (110 sites) and the CDN of nazwa.pl, a Polish host (97). Akamai and Fastly, large CDNs worldwide, sit in front of a few dozen .pl homepages between them.

The first byte behind Cloudflare is no faster on average. On phones, real Chrome users waited a median 756ms for it on Cloudflare sites (the 75th percentile of each site) and 760ms on sites without a CDN. The reason shows in Cloudflare's own header. 88% of its homepages were passed on to the origin server, and only the 10% served from its cache had a faster first byte. This is the same census we used for HTTP/3 and Brotli on Polish sites, read here for who answers and from where.

homepages read
7,785
behind Cloudflare
33%
of those pass the HTML to the origin
88%
median phone TTFB behind Cloudflare
756ms

What a CDN is and how it works

A CDN (content delivery network) is a set of servers, called edges, spread across cities. A visitor's browser connects to the nearest one instead of the site's own server, the origin. The edge can answer from its cache, when it holds a fresh copy of the file, or pass the request on to the origin and relay the answer. Either way it ends the visitor's connection close by, and can filter attacks and speak newer protocols on the site's behalf.

CDN vs hosting: what's the difference?

A CDN doesn't replace hosting. Whatever the edge can't answer from its cache, the origin still has to produce, and for most sites that includes the HTML page itself. Static files (images, scripts, fonts) are what a CDN caches without being told to.

CDN market share in Poland: which CDNs serve Polish sites?

38% of the homepages named a CDN in their headers. We found 14 networks, and one of them carries nearly nine in ten of those sites.

Cloudflare fronts a third of Polish homepages below the top 100

CDN named in the homepage's response headers, .pl sites by place in the Tranco list · n per row in the table · CDNs with fewer than 30 sites in CrUX folded into Other CDNs

  • Cloudflare
  • Amazon CloudFront
  • nazwa.pl CDN
  • Other CDNs
  • No CDN in the headers
All sitesn = 7,78533%62%
Top 100n = 10022%59%
Ranks 101–1,000n = 90034%58%
Below 1,000n = 6,78533%63%
Source: Outofplace census, 24 Sept 2026; Tranco list Y8YYGDownload CSVDownload PNG
Show the data
ItemCloudflareAmazon CloudFrontnazwa.pl CDNOther CDNsNo CDN in the headersn
All sites33%1.4%1.2%2.4%62%7,785
Top 10022%10%0%9%59%100
Ranks 101–1,00034%3.3%0.4%4.3%58%900
Below 1,00033%1%1.4%2%63%6,785
Cloudflare fronts a third of Polish homepages below the top 100. CDN named in the homepage's response headers, .pl sites by place in the Tranco list · n per row in the table · CDNs with fewer than 30 sites in CrUX folded into Other CDNs

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Cloudflare's share is lower at the very top: 22% of the top 100, against 34% of the next 900 and 33% below them; the 95% intervals of the top 100 and the rest don't overlap. The top 100 lean on other networks instead. Amazon CloudFront answers 10% of the top 100 and the smaller CDNs together 9%, while nazwa.pl's CDN is absent there. Its 97 sites are almost all below the top 1,000.

Is Cloudflare or Akamai bigger?

On Polish homepages, Cloudflare by two orders of magnitude: 2,563 sites against 24 for Akamai and 25 for Fastly. That is a count of sites, not of traffic or revenue, and our census sees only who answers the HTML of a homepage. A site that sends its images through Akamai and its pages from its own server counts here as "no CDN".

Every CDN named in the headers of .pl homepages: sites, share of all, and how many are in the top 100 and at ranks 101–1,000
CDNSitesShare of allIn the top 100Ranks 101–1,000
No CDN in the headers4,83262%59522
Cloudflare2,56333%22305
Amazon CloudFront1101.4%1030
nazwa.pl CDN971.3%04
Google Cloud load balancer300.4%06
Bunny CDN270.4%47
Fastly250.3%04
Akamai240.3%35
Azure Front Door240.3%14
Imperva220.3%09
Vercel140.2%11
Hostinger CDN90.1%00
Sucuri50.1%03
Netlify20%00
DDoS-Guard10%00
Download CSV

Where the CDN answers from: Warsaw, mostly

Four of the CDNs write the edge location that answered into a header: Cloudflare in cf-ray (a code such as -WAW), CloudFront in X-Amz-Cf-Pop, nazwa.pl in X-CDN-nazwa.pl-location, and Fastly in X-Served-By. For our client in Poland, almost every answer came from Warsaw.

The edge that answered the census client in Poland, for each CDN that reports one · 24 Sept 2026
CDNEdge that answeredSitesShare of the CDN's sites
CloudflareWarsaw (WAW)2,561100%
CloudflareFrankfurt (FRA)10%
CloudflareLondon (LHR)10%
Amazon CloudFrontWarsaw (WAW)10797%
Amazon CloudFrontFrankfurt (FRA)32.7%
nazwa.pl CDNWarsaw (WAW)97100%
FastlyVienna (VIE)1456%
FastlyBerlin (BER)936%
FastlyMarseille (MRS)28%
Download CSV

Cloudflare answered 2,561 of its 2,563 homepages from Warsaw. Fastly never answered us from Poland: its 25 sites came from Vienna, Berlin and Marseille. This is where each network sent one machine on one day; a visitor elsewhere in Poland, or on another network, may reach another edge.

Does Cloudflare cache HTML?

Not unless it is told to. Cloudflare's documentation on default cache behaviour (opens in a new tab) (updated 14 September 2026) says "the Cloudflare CDN does not cache HTML or JSON by default"; it caches by file extension, images, scripts, fonts and the like. Cloudflare marks its answers with a cf-cache-status header, and Cloudflare's page on cache responses (opens in a new tab) says what each value means. DYNAMIC means Cloudflare "determined at request time that the asset is not eligible for cache", and BYPASS that the origin's response turned out not to be cacheable.

Most CDNs pass a Polish homepage's HTML on to the origin

Cache status of the homepage HTML in each CDN's own header (cf-cache-status, X-Cache, X-CDN-nazwa.pl-cache) · n per row in the table

  • From the edge's cache
  • Cacheable, fetched this time
  • Passed to the origin
  • No cache header
Cloudflaren = 2,56388%
Amazon CloudFrontn = 11040%60%
nazwa.pl CDNn = 9730%24%46%
Other CDNsn = 18317%13%60%
Source: Outofplace census, 24 Sept 2026; Tranco list Y8YYGDownload CSVDownload PNG
Show the data
ItemFrom the edge's cacheCacheable, fetched this timePassed to the originNo cache headern
Cloudflare10%0.8%88%1%2,563
Amazon CloudFront40%60%0%0%110
nazwa.pl CDN30%24%0%46%97
Other CDNs17%9.8%13%60%183
Most CDNs pass a Polish homepage's HTML on to the origin. Cache status of the homepage HTML in each CDN's own header (cf-cache-status, X-Cache, X-CDN-nazwa.pl-cache) · n per row in the table

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Behind Cloudflare, 85% of homepages came back DYNAMIC and 2.6% BYPASS. Most sites, in other words, use Cloudflare as a relay for their HTML and let it cache only the files it caches anyway. CloudFront served 40% of its homepages from cache, and nazwa.pl 30%. Another 46% of nazwa.pl's homepages came without its cache header, so we can't tell. nazwa.pl's help page on its CDN headers (opens in a new tab) says the site's Cache-Control header decides.

Does Cloudflare improve TTFB?

TTFB (time to first byte) is how long a browser waits from asking for a page until the first byte of the answer arrives. It includes setting up the connection and, behind a CDN, the edge's own trip to the origin when it can't answer from cache. We looked at it two ways: the census's own timings, one request per site from Poland, and the phone TTFB that real Chrome users saw.

From Poland, a cached homepage waits a third as long for its first byte

Median wait from sending the request to the first byte, in ms, after the connection was set up · census client in Poland, one request per homepage · 95% bootstrap intervals

No CDN208ms
Cloudflare, HTML passed on229ms
Cloudflare, HTML from cache63ms
CloudFront, miss260ms
CloudFront, hit64ms
nazwa.pl CDN202ms
Other CDNs173ms
Source: Outofplace census, 24 Sept 2026; Tranco list Y8YYGDownload CSVDownload PNG
Show the data
ItemValueRangen
No CDN208ms201ms–218ms4,832
Cloudflare, HTML passed on229ms215ms–242ms2,251
Cloudflare, HTML from cache63ms59ms–70ms266
CloudFront, miss260ms172ms–320ms66
CloudFront, hit64ms52ms–90ms44
nazwa.pl CDN202ms121ms–318ms97
Other CDNs173ms137ms–217ms183
From Poland, a cached homepage waits a third as long for its first byte. Median wait from sending the request to the first byte, in ms, after the connection was set up · census client in Poland, one request per homepage · 95% bootstrap intervals

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

The census separates the two halves. Setting up the connection (DNS, TCP and TLS) took a median 90ms to Cloudflare's Warsaw edge, against 141ms to servers without a CDN. The wait after the request depends on the cache. When Cloudflare answered from its cache, the first byte came after a median 63ms. When it passed the page on, after 229ms, no shorter than the 208ms of a server without a CDN. CloudFront shows the same split between hits and misses.

Real users show the same pattern, with less of a gap. The Chrome UX Report has a phone record for 6,076 of the sites, from the 28 days to 22 September 2026.

Behind Cloudflare, only a cached homepage has a lower phone TTFB

Median of the origins' TTFB p75 on phones, in seconds · CrUX, 26 Aug to 22 Sept 2026 · 95% bootstrap intervals · n per row in the data

No CDN0.76s
Cloudflare, HTML passed on0.77s
Cloudflare, HTML from cache0.65s
CloudFront, miss0.71s
CloudFront, hit0.7s
nazwa.pl CDN0.66s
Other CDNs0.76s
Source: Chrome UX Report (Google, CC BY 4.0); Outofplace census, 24 Sept 2026Download CSVDownload PNG
Show the data
ItemValueRangen
No CDN0.76s0.74s–0.78s3,552
Cloudflare, HTML passed on0.77s0.74s–0.8s1,896
Cloudflare, HTML from cache0.65s0.57s–0.69s243
CloudFront, miss0.71s0.62s–0.86s63
CloudFront, hit0.7s0.53s–0.78s43
nazwa.pl CDN0.66s0.55s–0.84s69
Other CDNs0.76s0.71s–0.83s174
Behind Cloudflare, only a cached homepage has a lower phone TTFB. Median of the origins' TTFB p75 on phones, in seconds · CrUX, 26 Aug to 22 Sept 2026 · 95% bootstrap intervals · n per row in the data

The chart as an image, free to reuse under CC BY 4.0 with credit to Outofplace and a link to this page.

Taken whole, Cloudflare sites and sites without a CDN are level. The difference of the medians is -4ms, with a 95% interval from -40ms to 28ms. Split by the cache, they aren't. Cloudflare sites whose homepage came from its cache had a median of 654ms, those passed on 771ms, a difference of -117ms (interval -219ms to -66ms). The gap is smaller than in the census, probably because a phone's TTFB also holds redirects, DNS and the mobile network, which no cache shortens.

What is a good TTFB?

web.dev's guide to TTFB (opens in a new tab) calls 0.8 seconds or less good and anything over 1.8 seconds poor, as "a rough guide", and adds that TTFB isn't a Core Web Vital. By that line, 53% of Polish sites without a CDN had a good phone TTFB at the 75th percentile, 52% of Cloudflare sites passing their HTML on, and 64% of those serving it from Cloudflare's cache. The first byte is the start of Largest Contentful Paint, the loading metric Polish law firm websites fall short on most often.

The first byte isn't the page: LCP behind a CDN

Largest Contentful Paint, the Core Web Vital for loading, starts after the first byte and adds everything the page then fetches. A faster first byte doesn't carry over to it here. Cloudflare sites had a median LCP p75 86ms higher than sites without a CDN (interval 40ms to 142ms). Caching the HTML made no difference we could measure: the interval of that difference runs from -172ms to 62ms.

This gap is not adjusted for what sits behind Cloudflare: 36% of its homepages are online shops, including all 127 Shopify shops in the sample, and we didn't compare page types across the groups. For how shop platforms compare on LCP, see Core Web Vitals of Polish online shops.

Every group: origins in CrUX, median phone TTFB and LCP p75, the share within web.dev's good thresholds (0.8 s, 2.5 s), and the census's connection and wait medians
GroupOrigins in CrUXMedian TTFB p75Good TTFBMedian LCP p75Good LCPConnection set-upWait for the first byte
No CDN3,552760ms53%1,691ms85%141ms208ms
Cloudflare, HTML passed on1,896771ms52%1,785ms80%90ms229ms
Cloudflare, HTML from cache243654ms64%1,725ms83%92ms63ms
Cloudflare, miss or no status36771ms56%1,863ms86%75ms131ms
CloudFront, miss63705ms57%1,693ms78%109ms260ms
CloudFront, hit43696ms65%1,948ms81%130ms64ms
nazwa.pl CDN69660ms59%1,549ms86%88ms202ms
Other CDNs174757ms55%1,883ms73%142ms173ms
Download CSV

Do I need a CDN if my visitors are in Poland?

For the HTML, our data shows a faster first byte only where the CDN caches it. Our numbers say an edge in Warsaw sets up the connection faster than the average Polish server, and then waits for that same server whenever it passes the page on. In our data, sites whose CDN relays the HTML had the same first byte as sites without one, and only sites served from the CDN's cache had a faster one. Those are different sites, so this isn't the effect of switching caching on, but a cache hit is the one case where the trip to the origin is skipped.

The other reasons for a CDN don't depend on the HTML: images and scripts served from the edge, protection against attacks, and modern protocols and compression. Behind Cloudflare, most Polish homepages come with HTTP/3 and Brotli or zstd.

How to check whether your CDN caches your HTML

  1. Read the cache header

    Ask for your homepage the way a browser does and look at the CDN's own headers:

    curl -sI https://www.example.pl/ | grep -iE '^(cf-cache-status|cf-ray|x-cache|x-amz-cf-pop|x-cdn-nazwa\.pl-[a-z]+|age|cache-control):'

    cf-cache-status: HIT means Cloudflare answered from its cache, DYNAMIC that it passed the request on. CloudFront writes Hit from cloudfront or Miss from cloudfront in x-cache, nazwa.pl HIT or MISS in X-CDN-nazwa.pl-cache. Ask twice: the first request after a change may be a miss.

  2. Decide whether your HTML can be cached

    A page can be cached at the edge when every visitor gets the same HTML: no name in the header, no basket count printed into the page, no prices that depend on who asks. A shop or a logged-in area usually needs to keep visitors with a session cookie out of the cache, or load those parts with JavaScript after the page.

  3. On Cloudflare, add a Cache Rule

    A Cache Rule set to "Eligible for cache" for your HTML paths, with an Edge TTL, makes Cloudflare keep the page (the rule's settings (opens in a new tab)). Cache Rules are available on the Free plan (opens in a new tab), up to 10 of them (read 15 October 2026). Add a second rule with "Bypass cache" for requests that carry your session cookie, and purge the cache when you publish.

  4. On other CDNs, send Cache-Control

    CloudFront takes max-age or s-maxage from the origin's Cache-Control, within the minimum and maximum TTL of its cache policy, as AWS's page on cache expiration (opens in a new tab) explains; nazwa.pl's help page says the same header steers its cache. Cache-Control: public, max-age=0, s-maxage=300 lets shared caches keep the page for five minutes while browsers ask again each time.

  5. Measure again after four weeks

    CrUX reports 28 days of visits, so the effect of a change shows fully about a month later. Compare the phone TTFB p75 in PageSpeed Insights or the CrUX API before and after.

How we measured

What this data can't tell you

One response per site: the homepage, on 24 September 2026, from one machine in Poland, during a crawl with several sites in flight. Images, scripts and other pages may come from other hosts and other CDNs, so "no CDN" means none showed in the homepage's headers. Google Cloud's Via: 1.1 google names a load balancer that may or may not cache. The edges are where each network sent our machine, not every Polish visitor. CrUX counts Chrome users wherever they are, not only in Poland. We can't see a site's plan, its cache settings or where its origin server stands, so the comparisons between groups are correlations, not effects of a provider.

Which CDN has the largest market share in Poland?

Cloudflare, by far. On 24 September 2026 its headers showed on 33% of the 7,785 .pl homepages we read, 87% of all those showing any CDN. Amazon CloudFront came second with 110 sites and the Polish host nazwa.pl's own CDN third with 97.

What percentage of websites use Cloudflare?

Of the .pl sites in the Tranco list of popular domains, 33% answered their homepage through Cloudflare in our census of 24 September 2026. The share is lower at the very top: 22% of the top 100, against 33% of the sites below the top 1,000.

Does Cloudflare cache HTML?

Cloudflare is a CDN, but it doesn't cache HTML by default. Its documentation says its CDN "does not cache HTML or JSON by default", and on the Polish web 88% of the homepages behind Cloudflare were passed to the origin. Only 10% came from its cache. A Cache Rule, available on every plan, can make HTML eligible for caching.

What does cf-cache-status DYNAMIC mean?

It means Cloudflare decided the response was not eligible for its cache and fetched it from the origin server. HTML gets it unless a Cache Rule says otherwise. 85% of the Polish homepages behind Cloudflare came back with DYNAMIC in our census.

Does Cloudflare improve TTFB?

In our data, only Cloudflare sites served from its cache had a lower TTFB. On phones, the median TTFB of Polish sites behind Cloudflare was 756ms against 760ms for sites without a CDN. Cloudflare sites whose homepage came from its cache had a median of 654ms, against 771ms for those passed to the origin.

What is a good TTFB?

TTFB (time to first byte) is the time from sending the request to the first byte of the answer. web.dev's rough guide is 0.8 seconds or less, and over 1.8 seconds is poor; TTFB is not a Core Web Vital itself. Among Polish sites without a CDN, 53% had a phone TTFB p75 within 0.8 seconds; among Cloudflare sites served from its cache, 64%.

Do I need a CDN if my visitors are in Poland?

For the HTML, our data shows a faster first byte only where the CDN caches it. Cloudflare answered our client in Poland from Warsaw and set up connections faster than servers without a CDN, but when the HTML went on to the origin the wait for it was no shorter than without a CDN. The other reasons for a CDN, such as static files, attack protection and modern protocols, still hold.

Further reading

Cloudflare: Default cache behavior (opens in a new tab)Which file extensions Cloudflare caches by default, and why HTML isn't among them.developers.cloudflare.com
Cloudflare: Cloudflare cache responses (opens in a new tab)What each cf-cache-status value means, from HIT to DYNAMIC and BYPASS.developers.cloudflare.com
nazwa.pl: Nagłówki CDN nazwa.pl (opens in a new tab)The headers nazwa.pl's CDN adds, the edge codes it reports and how Cache-Control steers its cache (in Polish).nazwa.pl
web.dev: Time to First Byte (TTFB) (opens in a new tab)What TTFB measures, the 0.8 and 1.8 second guides, and how it relates to the Core Web Vitals.web.dev
PerformanceHTTP/3 adoption and Brotli vs gzip on Polish sitesWhich Polish sites advertise HTTP/3 and send Brotli or zstd, and who switched them on.

Tell us what we’re building.

We reply within one business day.