mod_expires未在JPEG图像上设置缓存控制头

6
我无法理解为什么我正在处理的网站中的普通JPEG图像(大约有十几个,每个<10 KB)不会使用他们被强制提供的缓存控制标头。我正在使用基于最新HTML5 Boilerplate .htaccess文件的规则(下面是相关部分)。奇怪的是,该网站中有大约相同数量的PNG,除了其中两个之外,缓存控制标头都可以正常工作。
<IfModule mod_expires.c>
  ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 month"

...

# media: images, video, audio
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"

...

  <IfModule mod_headers.c>
    Header append Cache-Control "public"
  </IfModule>

</IfModule>
(省略号表示删除了多余的ExpiresByType规则部分)

我已经从我的/etc/apache2/apache2.conf文件开始,基本上查找了每个从那里包含的conf文件,但找不到合理的解释。我也尝试了很多方法,用Pagesped和Chrome进行了数小时的审查,但仍然一筹莫展。

编辑:如下面所述,此网站的Web根目录中只有一个.htaccess文件。 JPEG以image/jpeg的mime类型正常显示,但缓存控制标头丢失,我无法弄清原因。

1个回答

5

我在mod_headers部分添加了no-transform,果然一切都按预期工作。现在我可以让墙壁休息一下,不再用额头撞它了。

  <IfModule mod_headers.c>
    Header append Cache-Control "public, no-transform"
  </IfModule>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接