浏览器如何使用过期标头,缓存控制标头,最后修改标头?

时间:2010-04-22 08:24:32

标签: browser-cache http-caching

我是一名Web开发人员,曾与PHP和.NET合作过。有超过一年的网络工作经验,我无法彻底了解浏览器缓存功能,我希望网络大师可以帮助我。我心中的疑问是:

  • 浏览器如何实际缓存内容,是否要求查看服务器上的缓存文件是否已更改,
  • 开发人员充分利用浏览器缓存的理想方式是什么,同时也能够毫不费力地在网站上推送新的更改。我认为如果浏览器以某种方式缓存我的CSS和JS和图像,然后每次只检查它们对服务器的修改,这可以解决问题。但我不知道该怎么做。

3 个答案:

答案 0 :(得分:4)

此博文可能有所帮助:

http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

它解释了如何使用缓存,同时保持在需要时进行更改的能力。

答案 1 :(得分:2)

使用CSS文件时,标准的“解决方法”是逐步向链接添加参数:

<link rel="stylesheet" href="http://mysite.com/styles.css?v=1">
<link rel="stylesheet" href="http://mysite.com/styles.css?v=2">
...

这将强制浏览器重新加载文件。

答案 2 :(得分:0)

如果您使用的是服务器端语言,则可以强制浏览器再次下载该文件。

<script src="script.js?<?= uniqid(); ?>">
<img src="myfile.jpg?<?= uniqid(); ?>">

但是如果你想要拥有一个更快的网站,缓存是好的,在开始禁用之前请记住,任何缓存都不必再次下载。

还有另一种方法可以控制需要缓存的内容,HTML5 Application Cache,将缓存逻辑转储到清单文件中。因此,清单中的每个文件都不会再次下载,直到清单文件本身发生更改。

请记住,如果您在JS,CSS,Image文件中更改了某些内容,并且需要将该更改推送给经常访问者,则还需要更新清单文件。您可以添加类似于发布日期的方式,浏览器知道它是一个新的清单,它将再次下载所有内容。