我在Ubuntu机器上的Apache 2上启用了mod_deflate,并注意到我的浏览器没有在页面刷新时缓存压缩文件类型。我使用了firebug的网络设置来检查并在另一台计算机上进行了验证。
如果我压缩css和js文件,则在mod_deflate下,浏览器每次都会发出请求。
如果我关闭mod_deflate,浏览器会获得一个304的css和js文件。实际效果是,如果我没有启用mod_deflate,页面在刷新时加载速度会更快。
我打开的其他模块之一是否会造成这种情况?我没有正确设置Apache中的某种缓存设置吗?
我的mods启用目录:
alias.conf
authz_default.load
autoindex.conf
deflate.load
mime.conf
php5.conf
setenvif.load
alias.load
authz_groupfile.load
autoindex.load
dir.conf
mime.load
php5.load
ssl.conf中
auth_digest.load
authz_host.load
cgi.load
dir.load
negotiation.conf
rewrite.load
ssl.load
authn_file.load
authz_user.load
deflate.conf
env.load
negotiation.load
setenvif.conf
答案 0 :(得分:0)
我以为我之前已经回答了这个问题但是没有发布。对不起,如果它最终成为双重帖子。
事实证明,导致问题的是etags。我不确定为什么,但是当我们关闭etags时,浏览器开始正确缓存。在Google上搜索FileETags。
现在,我不确定为什么关闭etags会这样做...如果有人知道,请发帖到这个帖子。谢谢!
答案 1 :(得分:0)
这实际上是关于使用gzip的Etags的Apache的错误:
https://issues.apache.org/bugzilla/show_bug.cgi?id=45023
转动ETag的工作原理有效,但有更好的解决方法:
<IfModule mod_headers.c>
RequestHeader edit "If-None-Match" "^(.*)-gzip$" "$1"
Header edit "ETag" "^(.*[^g][^z][^i][^p])$" "$1-gzip"
</IfModule>