Direct answer: Of 25 homepages, only one explicitly allows caching with a positive max-age (300 seconds). Eight send no-store, eight send private or no-cache, and eight have no Cache-Control at all. Expires appears on six sites and is already in the past on all six; four sites send ETag and four send Last-Modified. When compression is requested, 24 of 25 return gzip or Brotli (gzip 23, br 1, none 1), and 22 declare Vary: Accept-Encoding.

This study reads headers and at most 1 KB of body, without decompressing or saving the page; a cache policy is not a performance score.

25
usable homepages
1
explicitly cacheable
8
no Cache-Control
24
compressed
22
Vary: Accept-Encoding
4
ETag

Method: request compression, read headers only

The study reuses the 25 homepages from study 4 and fetches them serially on 2026-11-03 between 12:40 and 12:41, at least 0.8 s apart, with a research user agent. The request carries Accept-Encoding: gzip, deflate, br; only headers and at most 1 KB of body are read, without decompression.

Of 26 candidate URLs, 25 end with 200; E21 returns 502 three times and is excluded. Three others (502 or SSL EOF on the first attempt) recovered on retry.

ItemRuleBoundary
CacheableCache-Control with positive max-ageLiteral values; no cache-hit test
no-storeContains no-store, takes precedenceMay be required for personalisation or sessions
private / no-cacheContains private or no-cache, no positive max-age—
MissingNo Cache-ControlNot proof of uncacheability
CompressionContent-Encoding actually returnedLevel and decompressed size not tested
Expires in the pastEarlier than fetch timeOnly the six present values judged

Result: cache policy is mostly “not shareable”

Cache-Control policySitesShare of 25
no-store832.0%
private or no-cache (no positive max-age)832.0%
Missing832.0%
Positive max-age (300 seconds)14.0%

“Missing” is not the same as “uncacheable”: shared caches may apply heuristic freshness. But without an explicit lifetime, the CDN and browser decide for themselves. The eight no-store sites explicitly forbid storage.

ItemSitesNote
max-age present2One 300 s, one 0
Expires6All earlier than fetch time
ETag416.0%
Last-Modified416.0%, matching study 26

Without ETag or Last-Modified, a cache can only guess when to refetch. This matches the study 26 finding that 21 of 25 homepages lack Last-Modified.

Compression: 24 of 25 compress, Brotli only once

Content-EncodingSitesShare of 25
gzip2392.0%
br (Brotli)14.0%
None14.0%
deflate00%
Transfer itemSitesNote
Vary includes Accept-Encoding2288.0%
Vary missing3Compression may still be returned, but caches cannot separate variants
Transfer-Encoding: chunked16—
Content-Length9Complementary with chunked, 25 in total
CDN marker (X-Cache/Via)2Header-name detection only

Compression is nearly universal: with Accept-Encoding in the request, 24 sites return compressed content. The difference is the algorithm: 23 use gzip only and one returns Brotli. The three sites without Vary may let a shared cache serve a compressed variant to a client that does not accept it.

What this means for acceptance

  1. State the homepage cache policy explicitly. Only one of 25 gives a positive max-age; eight explicitly send no-store.
  2. Separate no-store from missing. no-store is a decision; missing leaves it to the cache.
  3. Check validators with date headers. Only four sites have ETag and four have Last-Modified; without either, revalidation is time-based only.
  4. Vary must follow compression. 22 sites declare Accept-Encoding and three do not; a compressed variant must be distinguishable in caches.
  5. Brotli is still an option. Of 24 compressed sites only one uses br; the rest are gzip. Whether to enable it depends on CDN and client support.

Limits

  • Single request: fetched once on 2026-11-03 12:40–12:41; CDNs and WAFs may vary by region or time.
  • Headers only: real browser and intermediary cache hit rates are not measured, nor compressed byte size.
  • no-store may be right: sessions, personalisation or compliance can justify it; this study does not judge intent.
  • Missing is not uncacheable: shared caches may use heuristics; the study only records whether the site gave an explicit instruction.
  • 25-site pilot: no industry claim.

Data and reproduction

Anonymised data: equipment-cache-compression-2026.csv (25 rows × 15 columns: raw Cache-Control, policy class, max-age, Expires, ETag, Last-Modified, Vary, Content-Encoding, chunked, Content-Length, CDN markers). The repository keeps docs/research/2026-11-cache-compression.csv.

Parser: scripts/cache_compression_probe.py; unit tests: scripts/test_cache_compression_probe.py (10 tests, no network). Run:

python -m unittest scripts.test_cache_compression_probe

Related: the HTTP date header pilot, the homepage security header pilot, and the homepage performance proxy pilot.

Sources and definitions

  1. Homepage sample: the 25 homepages from study 4 (same sample_id).
  2. Fetch: 2026-11-03 12:40–12:41 Asia/Shanghai, serial, ≥0.8 s apart.
  3. Request header: Accept-Encoding: gzip, deflate, br; headers and at most 1 KB of body read.
  4. Policy classes and compression labels follow the literal response headers.
About the author

Lingyi Information Official (delivery team) works on requirements, proposals and acceptance for corporate websites, brand and smart-manufacturing projects. This article counts cache and compression declarations in one response; it does not measure cache hit rates, compressed size or real load performance and is not a final judgement of any site's performance; the 25-site sample is a pilot.

Accept cache and compression separately

An explicit max-age, no-store and no declaration are three different states; compression is common but still mostly gzip.

Request a recheck plan