This Stack Overflow page explains how to set HTTP headers for cache control in web development, including examples and best practices., I don't find get the practical difference between Cache-Control:no-store and Cache-Control:no-cache. As far as I know, no-store means that no cache device is allowed to cache that response. In the, Ok, even if you aren't using express, what essentially needed is to set the nocache headers. I'm adding the headers in a reusable middleware, otherwise you can set those headers in any way that works., @Anshul No, must-revalidate and no-cache have different meaning for fresh responses: If a cached response is fresh (i.e, the response hasn't expired), must-revalidate will make the proxy serve it right away without revalidating with the server, whereas with no-cache the proxy must revalidate the cached response regardless of freshness. Source: "HTTP - The Definitive Guide", pages 182-183., Pragma is the HTTP/1.0 implementation and cache-control is the HTTP/1.1 implementation of the same concept. They both are meant to prevent the client from caching the response. Older clients may not support HTTP/1.1 which is why that header is still in use., Similar to the NoCache option. Clients receive a Cache-Control: no-cache directive but the document is cached on the origin server. Equivalent to ServerAndNoCache. ServerAndNoCache Applies the settings of both Server and NoCache to indicate that the content is cached at the server but all others are explicitly denied the ability to cache the .