441

Apache开启gzip后不发送304问题

2015.04.30 评论(2) 654次

自从上次对网站加入了gzip和缓存后,见《WP折腾之开启mod_rewrite&Gzip》,就一直没有管了,最近用站长工具扫描的时候,提示网站居然没用gzip压缩,js、css都没有压缩。。。奇怪了啊。

分析http头信息,发现在启用mod_deflate模块后,会自动给ETag加上"-gzip"串,导致不会缓存,每次都发送文件内容了。

这是为毛啊,google后,发现这是apache2.4的一个bug,见官网Bug 45023,但是和我这里有点不一样,我的环境中的"-gzip"是在引号内部,但应该是相同的问题。

网上一致的修改方法是在请求后,把Etag中的"-gzip"去掉。使用如下方法:

但是在我这不起作用啊= =,这是为啥。仔细看,在匹配的时候,实际上是会匹配引号的,导致第二行是匹配不上ETag:"xxxxx-gzip"的。自己改下:


终于ok了:

终于返回304了。

在Apache2.5版本中,修正了这个问题,见Apache 2.5 Document,可以使用DeflateAlterETag控制在压缩完成后,需不需要加上后缀。

DeflateAlterETag Directive

Description:How the outgoing ETag header should be modified during compression
Syntax:DeflateAlterETag AddSuffix|NoChange|Remove
Default:DeflateAlterETag AddSuffix
Context:server config, virtual host
Status:Extension
Module:mod_deflate

The DeflateAlterETag directive specifies how the ETag hader should be altered when a response is compressed.

AddSuffix
Append the compression method onto the end of the ETag, causing compressed and uncompressed representations to have unique ETags. This has been the default since 2.4.0, but prevents serving "HTTP Not Modified" (304) responses to conditional requests for compressed content.
NoChange
Don't change the ETag on a compressed response. This was the default prior to 2.4.0, but does not satisfy the HTTP/1.1 property that all representations of the same resource have unique ETags.
Remove
Remove the ETag header from compressed responses. This prevents some conditional requests from being possible, but avoids the shortcomings of the preceding options.
完:本文共1502字
标签: , ,
  • 本文标题:Apache开启gzip后不发送304问题
  • 本文地址:http://www.jialeens.com/archives/441.html
  • 本站文章除注明转载外,均为本站原创或编译
  • 欢迎任何形式的转载,但请务必以链接形式注明出处,请尊重他人劳动成果
  • 本作品采用 [知识共享署名3.0] 进行许可
上一篇: 没有了,已经是最新文章。
相关文章:
2条评论
评论 (2)
相关 (0)
  • 1楼
    hello Firefox 45.0 Windows 10 x64 Edition :

    O(∩_∩)O谢谢

    2016.03.25 22:29 回复
  • 2楼
    感谢 Google Chrome 46.0.2490.86 Windows 8.1 x64 Edition :

    按照你的方法解决了

    2015.12.26 12:01 回复
  • 还没有Trackback
发表评论
icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif