最近在Apache上做网站的静态资源缓存,但是各种配置之后,发现css和js返回的状态码都是200,为什么不是304?
找来找去在知乎上得到了答案。
来自知乎的一个回答 http://www.zhihu.com/question/35036322
apahce 2.4本身的一个bug。apache2.4同时使用gzip压缩和缓存,etag名字会自动变成“******-gzip”,当存在gzip时就会出现问题。可以在http.conf中添加
<IfModule mod_headers.c> <FilesMatch ".(js|css|html|htm|png|swf|pdf|shtml|xml|flv|gif|ico|jpeg)$"> RequestHeader edit "If-None-Match" "^(.*)-gzip(.*)$" "$1$2" Header edit "ETag" "^(.*)-gzip(.*)$" "$1$2" </FilesMatch> </IfModule>
过滤掉etag名字中的‘-gzip’后缀。官网详情:Bug 45023 – DEFLATE preventing 304 NOT MODIFIED response