What is the proper way to tell the browser not to

2019-02-21 19:52发布

问题:

I have a web page that always needs to stay current. I do not want the browser to cache it. To that end, this meta tag is embedded with the page:

<meta name="Expires" content="Tue, 01 Jun 1999 19:58:02 GMT"> 

However, some browsers seem to ignore it. Chrome is particularly bad at it, though other browsers tend to do the same thing.

When I pick the page from the bookmarks bar, most of the time, it doesn't even hit the server, just loads it from cache. If I then press F5, it does go to the server and fetch a new copy.

Am I missing something simple? I thought the expires meta tag is the way it's done.

This is happening on an IIS 5.0 on Windows 2000.


Bottom line: looks like meta tags inside the HTML code pretty much do nothing. However, setting the expires tags within the HTTP does the trick nicely.

回答1:

Send your expires headers using your server. Specifically, if you're using apache, look at this:

http://httpd.apache.org/docs/2.0/mod/mod_expires.html



回答2:

You want to send an Expires header set to a date in the past (like your Meta tag).

Expires is the most widely respected cache header, but you can also use things like Last-Modified, or Etags to get more specific control.

Meta tags are a somewhat outdated means of setting caching protocols, and most of the meta cache control properties are fairly deprecated (e.g. NO-CACHE). A lot of user agents ignore them.



回答3:

This should help you:

<meta http-equiv="cache-control" content="no-cache" />

You can also configure the static content cache mechanism through IIS; you can learn how to do so here: http://support.microsoft.com/kb/247404.



回答4:

There is a great article I used to read about browser caching ans caching in general :

http://www.mnot.net/cache_docs/

It explains in high details what works and what does not, what is best to do.

In summary there are a lot of ways (html tags, HTTP headers) and types of cache (browser proxy, gateways)



回答5:

Send Cache-Control: no-cache to the client within the response headers.
Please specify what platform are you using to make a better response.



回答6:

<meta http-equiv="Cache-Control" content="private, no-store" />

Is really ALL you need, as stated here https://youtu.be/TNlcoYLIGFk?t=654 by Andrew Betts, elected W3C TAG member.

Using this, you will not need pragma or expires. Infact, the above will overwrite the Expires command.