HTTP response caching

44,048

Solution 1

No, that's not the correct way. Here is the correct way:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

You'll probably see someone else suggesting other entries/attributes, but those are completely irrelevant when at least the above are mentioned.

Don't forget to clear your browser cache before testing after the change.

See also:

Solution 2

We use:

    // HTTP 1.1
    response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
    // HTTP 1.0
    response.setHeader("Pragma", "no-cache");

Solution 3

According to microsoft, these headers are required for IE:

  • Cache-Control;
  • Pragma;
  • Expires (that should be negative);

Example:

Pragma: no-cache
Cache-Control: no-cache
Expires: -1
Share:
44,048

Related videos on Youtube

Dónal
Author by

Dónal

I earn a living by editing text files. I can be contacted at: [email protected] You can find out about all the different kinds of text files I've edited at: My StackOverflow Careers profile

Updated on July 09, 2022

Comments

  • Dónal
    Dónal almost 2 years

    I want to ensure that my servet's response is never cached by the broswer, such that even if two identical requests are made (a nanosecond apart), the server is always contacted. Is this the correct way to achieve this:

    class MyServlet extends HttpServlet {
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) {
            response.setHeader("Cache-Control", "no-cache");
        }
    }
    

    Thanks, Don

  • Illarion Kovalchuk
    Illarion Kovalchuk almost 14 years
    In addition to before said, I would suggest to do this not in servlet, but in filter, placed before other filters/servlets, so that you can add no-caching to the whole application, without need to add or call this "response.set.." in each of servlets.
  • flup
    flup almost 10 years
    But some clients need the longer list. Like java 1.7 applets. See stackoverflow.com/questions/17181129/…