当 deflate 处于开启状态时,apache httpd mod_expires 不起作用

当 deflate 处于开启状态时,apache httpd mod_expires 不起作用

在 Debian Jessie 安装中,我手动安装了 wordpress 并编辑.htaccess,打开 mod_expires:

ExpiresActive On
ExpiresDefault modification

但是,当我使用 Firefox Inspector 监视网络流量时,我发现所有 js 和 css 文件都返回 200 OK 并带有 gzip 压缩内容,而不是 HTTP 304。

然后我做了一些实验。

  1. 我创建了一个几乎为空(不可压缩)的文件foobar.css,并在 Firefox 中浏览它。它200 OK返回未压缩第一次和304 Not Modified第二次的数据。
  2. 我重复了几次相同的内容,以创建一个大(可压缩)文件。这次服务器200 OK返回压缩第一次、第二次、第三次的数据......每次都返回相同的内容而不是预期的内容304 Not Modified

我观察了一下/etc/apache2/mods-enabled/deflate.conf,发现text/css默认情况下是放气的:

...
AddOutputFilterByType DEFLATE text/css
...

mod_expires 和 mod_deflate 这两个模块可以同时工作吗?应该如何配置?

非常抱歉我的英语不好。

编辑:我在这里找到了一种解决方法: https://bz.apache.org/bugzilla/show_bug.cgi?id=45023#c22 但是这只是一个解决方法。我认为这确实是一个服务器错误。

答案1

我在这里找到了一种解决方法:https://bz.apache.org/bugzilla/show_bug.cgi?id=45023#c22

.htaccess只需在httpd 配置文件中输入以下行:

RequestHeader edit "If-None-Match" '^"((.*)-gzip)"$' '"$1", "$2"'

虽然肮脏,但有效。;)

相关内容