【问题标题】:mod_deflate on apache causing browser to do a 200 instead of 304?apache 上的 mod_deflate 导致浏览器执行 200 而不是 304?
【发布时间】:2010-10-29 19:05:33
【问题描述】:

我在 Ubuntu 机器上的 Apache 2 上启用了 mod_deflate,并注意到我的浏览器在页面刷新时没有缓存压缩文件类型。我使用firebug的网络设置来检查这个并在另一台计算机上验证。

在mod_deflate下如果我压缩css和js文件,浏览器每次都会发出请求。

如果我关闭 mod_deflate,浏览器会为 css 和 js 文件获得 304。最终效果是,如果我没有启用 mod_deflate,页面在刷新时加载速度会更快。

我打开的其他模块之一是否会导致此问题? Apache 中是否存在某种我设置不正确的缓存设置?

我的 mods 启用目录: 别名.conf
authz_default.load
自动索引.conf
放气.load
mime.conf
php5.conf
setenvif.load
别名.load
authz_groupfile.load
自动索引加载
目录.conf
mime.load
php5.load
ssl.conf
auth_digest.load
authz_host.load
cgi.load
目录加载
协商.conf
重写.load
ssl.load
authn_file.load
authz_user.load
放气.conf
环境加载
协商加载
setenvif.conf

【问题讨论】:

  • 你能在 mod_deflate 启用时发布你的标题吗?这可能是配置问题,标题可能会很明显。
  • 在这里查看比上面更好的修复:stackoverflow.com/a/38617597/960020

标签: apache caching mod-deflate http-status-code-304


【解决方案1】:

我以为我之前回答过这个问题……但没有发布。对不起,如果它最终成为一个双重职位。

原来是 etags 导致了问题。我不知道为什么,但是当我们关闭 etags 时,浏览器开始正确缓存内容。在 Google 上搜索 FileETags。

现在,我不确定为什么关闭 etags 会这样做...如果有人知道,请在此线程中发帖。谢谢!

【讨论】:

    【解决方案2】:

    这实际上是 Apache 关于 Etags 与 gzip 的错误:

    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>
    

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 2021-06-18
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2011-04-14
      • 1970-01-01
      相关资源
      最近更新 更多