2012-02-18 59 views
3

我正在学习有关apache及其各种模块,目前我很困惑mod_expires。到目前为止我所读到的是,使用这个模块,我们可以为静态文件设置将来的过期头,以便浏览器不需要每次都请求它们。mod_expires在apache htaccess

我对以下事实感到困惑:如果某人更改了css/js或其中的任何图像文件,浏览器将如何知道它,因为我们已经告诉浏览器这不会改变, 1年。

在此先感谢

+0

这篇关于[优化缓存](http://code.google.com/speed/page-speed/docs/caching.html)的Google文章是这个主题的一个很好的概述。 – TerryE 2012-02-18 23:52:48

回答

2

它可能不适合你的HTTP服务器上的所有提供的内容是可能的,但你可以简单地更改文件名以更新来自服务器的客户端的文件。此时,浏览器将下载新内容。

有时,对于流量较少的网站,将缓存设置为更低的值会更有效。

请务必谨慎使用365天的过期时间,并且您可以设置1年到期的事实并不意味着您总是必须这样做。换句话说,不要成为过早优化的牺牲品。

缓存过期设置为1年的一个很好的例子是国家的标志,这些标志不可能改变。此外,请注意,通过简单的浏览器刷新页面,客户端可以放弃本地缓存并再次从源中下载内容。

测试所有这一切的好方法是使用Firefox和Firebug。有了这个扩展,你可以分析请求和响应。

在这里您可以找到RFC规格。

+0

只需添加。浏览器还可以询问服务器文件是否已更改。它使用If-Modified-Since标题执行此操作。这样,如果文件没有改变,浏览器不会再次下载文件,而是使用本地缓存。与Expires标题相比,(次要的)不利之处在于浏览器仍然必须连接到服务器才能执行此检查,而这需要一点时间。 – Gerben 2012-02-19 20:25:41