在.htaccess上设置过期的标题后,站点图像不会刷新

时间:2009-11-20 03:04:58

标签: .htaccess caching header

我有一个网站,它为所有图片使用CSS精灵。 我设置 .htaccess 文件,将过期的标头设置为未来时间,因为他们建议改善网站性能。

然而,当我更新精灵图片时,我在两台不同的计算机上的浏览器似乎都没有获取新图片

我多次删除了 .htaccess ,但没有运气。

我相信这一定很容易解决,但现在我没有选择。

以下是 .htaccess 文件中的代码:

# CONFIGURE media caching
#
Header unset ETag
FileETag None
<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
Header unset Last-Modified
Header set Expires "Fri, 21 Dec 2012 00:00:00 GMT"
Header set Cache-Control "public, no-transform"
</FilesMatch>

<IfModule mod_deflate.c>
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>

2 个答案:

答案 0 :(得分:1)

通过将缓存日期设置为将来的日期,您已告知浏览器将图像存储在本地直到该日期,而不是从服务器请求它。因此,当您更改服务器上的图像时,它不会更新。

对于调试,您可以通过使用Ctrl + F5进行硬刷新并从服务器请求所有文件来解决此问题。

对于生产,您需要妥善解决这个问题。标准做法是将版本号或最后更新的日期附加到图像,css等。在这种情况下,您可以将它放入您的CSS中:

background: url(/images/my_image.png?201004071748);

然后当您更改图像时更新日期。这样,当浏览器解析CSS并请求图像时,它会认为这是与缓存的图像不同的图像,并向服务器发送新请求以获取图像。

答案 1 :(得分:0)

阅读GoDaddy文档,我发现您需要更新到“Configuration 2.0” http://help.godaddy.com/article/1078

如果GoDaddy没有从他们的http标题中删除Apache版本,那将更加明显。