What is the proper way to tell the browser not to cache?

只谈情不闲聊 提交于 2019-11-28 07:12:25

问题


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:


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.




回答3:


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.




回答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.



来源:https://stackoverflow.com/questions/1370896/what-is-the-proper-way-to-tell-the-browser-not-to-cache

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!