浏览器缓存覆盖过期标头

时间:2016-11-23 16:29:28

标签: .htaccess caching expires-header

我有一个Joomla网站,在Apache服务器上运行,我遇到了Firefox和Chrome浏览器缓存页面而没有提供最新版本的问题。

我已将此代码添加到我的htaccess文件中:

<IfModule mod_expires.c>
# Enable expirations
ExpiresActive On 
# Default directive
ExpiresDefault "access plus 60 seconds"
# My favicon
ExpiresByType image/x-icon "access plus 1 month"
# Images
ExpiresByType image/gif "access plus 1 week"
ExpiresByType image/png "access plus 1 week"
ExpiresByType image/jpg "access plus 1 week"
ExpiresByType image/jpeg "access plus 1 week"
# CSS
ExpiresByType text/css "access plus 1 week"
# Javascript
ExpiresByType application/javascript "access plus 1 week"
</IfModule>

如果我清除Chrome和Firefox中的浏览器缓存然后加载该网站,我会根据上面的代码获得图像,css和javascript的正确响应标头。

对于主文档,我在第一次加载时得到这些响应头:

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Wed, 17 Aug 2005 00:00:00 GMT
Pragma: no-cache

但是当我重新加载页面或者甚至在新标签页中打开它时,那些过期标题会消失,浏览器会加载缓存的网页(状态代码304不会被修改)。

我无法理解这里发生的事情。我在Mac上并使用没有任何这些问题的Safari,所以我很困惑为什么Chrome和Firefox的行为方式不符合我的期望。

也许可以解释为什么页面与过期相比具有与htaccess中的默认值不同的一组响应头。这是mod_expires的工作方式吗?

我希望此处有足够的信息来回答我的问题,提前谢谢。

1 个答案:

答案 0 :(得分:0)

这会有所帮助,请参考。通过这个链接

http://php.net/manual/de/function.session-cache-limiter.php