我已经成功实现了 expires 标头,但是几天来我一直被一件事困扰。这篇文章:http://www.tipsandtricks-hq.com/how-to-add-far-future-expires-headers-to-your-wordpress-site-1533状态
请记住,当您使用 expires 标头时,文件会缓存在浏览器中,直到过期为止,因此请不要在经常更改的文件上使用它。
在我看来,其他网站也给出了同样的提示。但这似乎不是真的。我曾多次使用相同的名称更新图像。每次我更新并刷新浏览器时,都会显示新图像(具有相同的名称)。我从这篇文章中了解到,除非我使用新名称,否则应该会显示旧图像。
你知道误会在哪里吗?
我已经验证了有问题的图像已经设置了过期标头:
请求标头:
Host domain.com
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28 FirePHP/0.5
Accept image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Referer http://domain.com/index.php
Cookie __utma=1.61479883.1332439113.1332783348.1332796726.4; __utmz=1.1332439113.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none);PHPSESSID=lv2hun9klt2nhrdkdbqt8abug7; __utmb=1.33.10.1332796726; __utmc=1; ck_authorized=true
x-insight activate
If-Modified-Since Mon, 26 Mar 2012 21:55:33 GMT
Cache-Control max-age=0
响应标头:
Date Mon, 26 Mar 2012 22:06:50 GMT
Server Apache/2.2.3 (CentOS)
Connection close
Expires Wed, 25 Apr 2012 22:06:50 GMT
Cache-Control max-age=2592000
相关配置(.htaccess):
<IfModule mod_expires.c>
# Enable Expires Headers for this directory and sub directories that don't override it
ExpiresActive on
# Set default expiration for all files
ExpiresDefault "access plus 24 hours"
# Add Proper MIME-Type for Favicon
AddType image/x-icon .ico
# Set specific expriation by file type
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/ico "access plus 1 month"
ExpiresByType image/icon "access plus 1 month"
</IfModule>
答案1
您似乎混淆了保留缓存图像和使用缓存图像。浏览器保持缓存图像,如配置所示。但是,如果浏览器知道缓存图像不是最新的,它将不会使用缓存图像。重新验证和过期是两码事。
答案2
您应该使用“Cache-Control max-age=2592000, public”,这样浏览器就会保存该文件。