Adding no-cache to the response causes revalidation to the server, so you can serve a fresh response every time — or if the client already has a new one, just respond 304 Not Modified. The stale-if-error request directive indicates that the browser is interested in receiving stale content on error from any intermediate server for a particular origin.This is not supported by any browser (see Browser compatibility). Clients can use this header when the user requires the response to not only be fresh, but also requires that it won’t be updated for a period of time. The no-cache request directive asks caches to validate the response with the origin server before reuse. The must-understand response directive indicates that a cache should store the response only if it understands the requirements for caching based on status code.
Clearing an already-stored cache
At most, one could haveone of each http-equiv declarations; pragma, cache-control andexpires. These are completely outdated when using modern up to date browsers.After IE9 anyway. Chrome and Firefox specifically cometcoin does not work with these as you would expect, if at all. In such a case, you could address the caching needs by using a specific, numbered version of the library, and including the hash of the picture in its URL.
When you update the library or edit the picture, new content should have a new URL, and caches aren’t reused. When you build static assets with versioning/hashing mechanisms, adding a version/hash to the filename or query string is a good way to manage caching. No-cache allows clients to request the most up-to-date response even if the cache has a fresh response. When you use a cache-busting pattern for resources and apply them to a long max-age, you can also add immutable to avoid revalidation.
Middleware to turn off caching
Use a no-cache to make sure that the HTML response itself is not cached. No-cache could cause revalidation, and the client will correctly receive a new version of the HTML response and static assets. The React library version will change when you update the library, and hero.png will also change when you edit the picture. If you don’t want a response stored in caches, use the no-store directive.
If you forget to add private to a response with personalized content, then that response can be stored in a shared cache and end up being reused for multiple users, which can cause personal information to leak. There are no cache directives for clearing already-stored responses from caches on intermediate servers. The stale-if-error response directive indicates that the cache can reuse a stale response when an upstream server generates an error, or when the error is generated locally. Here, an error is considered any response with a status code of 500, 502, 503, or 504. When a user reloads the browser, the browser will send conditional requests for validating to the origin server. The public response directive indicates that the response can be stored in a shared cache.
Preventing storing
The no-store request directive allows a client to request that caches refrain from storing the request and corresponding response — even if the origin server’s response could be stored. In general, when pages are under Basic Auth or Digest Auth, the browser sends requests with the Authorization header. This means that the response is access-controlled for restricted users (who have accounts), and it’s fundamentally not shared-cacheable, even if it has max-age. Imagine that clients/caches store a fresh response for a path, with no request flight to the server.
Adding ?nocache=1 to every url (including the assets like stylesheet) behind the scenes using mod rewrite
- Usually, the revalidation is done through a conditional request.
- This means that the response is access-controlled for restricted users (who have accounts), and it’s fundamentally not shared-cacheable, even if it has max-age.
- Cache storage isn’t required to remove stale responses immediately because revalidation could change the response from being stale to being fresh again.
- The client indicates that an already-cached response should be returned.
HTTP allows caches to reuse stale responses when they are disconnected from the origin server. Must-revalidate is a way to prevent this from happening – either the stored response is revalidated with the origin server or a 504 (Gateway Timeout) response is generated. The must-revalidate response directive indicates that the response can be stored in caches and can be reused while fresh. If the response becomes stale, it must be validated with the origin server before reuse. Cache that exists between the origin server and clients (e.g., Proxy, CDN). It stores a single response and reuses it with multiple users — so developers should avoid storing personalized contents to be cached in the shared cache.
Note that the major browsers do not support requests with max-stale. After the stale-if-error period passes, the client will receive any error generated. If no request happened during that period, the cache became stale and the next request will revalidate normally.
No-transform indicates that any intermediary (regardless of whether it implements a cache) shouldn’t transform the response contents. If a cache doesn’t support must-understand, it will be ignored. Note that s-maxage or must-revalidate also unlock that restriction. In the browser, I get a cached version of the stylesheet which does not reflect the recent one. Also, there is no setting to enable “development mode” which apparently turns off caching on the godaddy control panel.
Response Directives
I looked it up and as it turns out, their flush caching facility is not available to me in the wordpress dashboard as it is a subdirectory /wp/ installation. This page was last modified on Jul 4, 2025 by MDN contributors. Must-understand should be coupled with no-store for fallback behavior.
- There are no cache directives for clearing already-stored responses from caches on intermediate servers.
- The stale-if-error request directive indicates that the browser is interested in receiving stale content on error from any intermediate server for a particular origin.This is not supported by any browser (see Browser compatibility).
- If you don’t want a response stored in caches, use the no-store directive.
- When you build static assets with versioning/hashing mechanisms, adding a version/hash to the filename or query string is a good way to manage caching.
Revalidation will make the cache be fresh again, so it appears to clients that it was always fresh during that period — effectively hiding the latency penalty of revalidation from them. This Express middleware sets some HTTP response headers to try to disable client-side caching. Caching headers are unreliable in meta elements; for one,any web proxies between the site and the user will completely ignorethem. You should always use a real HTTP header for headers such asCache-Control and Pragma. Note that the major browsers do not support requests with min-fresh.
It does this by requiring caches to revalidate each request with the origin server. The no-cache response directive indicates that the response can be stored in caches, but the response must be validated with the origin server before each reuse, even when the cache is disconnected from the origin server. This usually means the response can be reused for subsequent requests, depending on request directives. Ask the origin server whether or not the stored response is still fresh. Usually, the revalidation is done through a conditional request.
If a cache supports must-understand, it stores the response with an understanding of cache requirements based on its status code. This section lists directives that affect caching — both response directives and request directives. You can add a long max-age value and immutable because the content will never change. The immutable response directive indicates that the response will not be updated while it’s fresh. However, cacheing headers are unreliable in meta elements; for one, any web proxies between the site and the user will completely ignore them.