You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Use of Cache-Control should be flagged by Site Health for unauthenticated frontend responses due to preventing bfcache #1692
Browsers have typically prevented a page from being served from bfcache when is served with Cache-Control: no-store. For example, in Core-21938 this was done to prevent a cached page from being accessed after a user logs out of WordPress. However, there are many sites that serve Cache-Control: no-store even to unauthenticated requests. This is the number one reason for why bfcache is disabled in WP sites, as is seen at GoogleChromeLabs/wpp-research#75.
Chrome is currently experimenting with enabling bfcache when pages are served with Cache-Control: no-store, but there are scenarios still where such pages remain ineligible.
A Site Health test can be added which warns sites when they served unauthenticated responses with Cache-Control: no-store as this can make them ineligible for bfcache and thus negatively impact navigation performance.
Also, if a WP Site uses Speculation Rules Prefetch or Prerender having BFCache working is particularly important in case of following back/forward navigations.
Speculation Rules is an API that works really well in combination with BFCache (not being blocked) and/or Cross Document View Transition.
This may make sense to propose as part of the core merge for Speculative Loading since it if the Cache-Control header prevents Speculation Rules from working, then having the feature enabled in core would only wastefully increase server load without improving the user's navigation experience.
changed the title [-]Use of `Cache-Control: no-store` should be flagged by Site Health for unauthenticated frontend responses[/-][+]Use of `Cache-Control`: `no-store`, `no-cache`, `max-age=0` should be flagged by Site Health for unauthenticated frontend responses[/+]on Nov 29, 2024
@westonruter
I have a few questions regarding the implementation to clarify things:
From what I understand, we need to add this check for the HTML page, such as the home page, and verify its header—but not for the assets, correct?
If we need to add this check for the assets as well, then integrating the assets check into #1727 seems like a better approach, while handling the HTML page check as a separate site health check.
From what I understand, we need to add this check for the HTML page, such as the home page, and verify its header—but not for the assets, correct?
Correct! Doing one HTTP GET request to the homepage.
If we need to add this check for the assets as well, then integrating the assets check into #1727 seems like a better approach, while handling the HTML page check as a separate site health check.
No, this doesn't relate to the assets. So I think these two tests are related but distinct.
changed the title [-]Use of `Cache-Control`: `no-store`, `no-cache`, `max-age=0` should be flagged by Site Health for unauthenticated frontend responses[/-][+]Use of `Cache-Control` should be flagged by Site Health for unauthenticated frontend responses due to preventing bfcache[/+]on Jan 20, 2025
Activity
westonruter commentedon Nov 29, 2024
This may end up being important for Speculative Loading as well (h/t @yoavweiss):
gilbertococchi commentedon Nov 29, 2024
That's an interesting insight, +1.
Also, if a WP Site uses Speculation Rules Prefetch or Prerender having BFCache working is particularly important in case of following back/forward navigations.
Speculation Rules is an API that works really well in combination with BFCache (not being blocked) and/or Cross Document View Transition.
westonruter commentedon Nov 29, 2024
This may make sense to propose as part of the core merge for Speculative Loading since it if the
Cache-Controlheader prevents Speculation Rules from working, then having the feature enabled in core would only wastefully increase server load without improving the user's navigation experience.See Core-62503 and WordPress/wordpress-develop#7860.
cc @felixarntz
[-]Use of `Cache-Control: no-store` should be flagged by Site Health for unauthenticated frontend responses[/-][+]Use of `Cache-Control`: `no-store`, `no-cache`, `max-age=0` should be flagged by Site Health for unauthenticated frontend responses[/+]westonruter commentedon Nov 29, 2024
Speculative Loading should also then be disabled automatically when a user is logged-in.westonruter commentedon Nov 29, 2024
I've filed this as #1709.
westonruter commentedon Jan 16, 2025
@b1ink0 Given your recent experience on Site Health tests #1727 and #1762 you may want to pick this up as well.
b1ink0 commentedon Jan 16, 2025
@westonruter
I have a few questions regarding the implementation to clarify things:
gilbertococchi commentedon Jan 16, 2025
@westonruter I took a stab at looking at the HTTP Archive data and it looks like there are at least 547k WP Origins using CCNS to date.
westonruter commentedon Jan 16, 2025
Correct! Doing one HTTP
GETrequest to the homepage.No, this doesn't relate to the assets. So I think these two tests are related but distinct.
[-]Use of `Cache-Control`: `no-store`, `no-cache`, `max-age=0` should be flagged by Site Health for unauthenticated frontend responses[/-][+]Use of `Cache-Control` should be flagged by Site Health for unauthenticated frontend responses due to preventing bfcache[/+]westonruter commentedon Jan 25, 2025
Follow-up: #1825