使用.htaccess配置HTTP缓存头

18

我正在尝试配置我的.htaccess文件以设置缓存时间。尝试了各种可能的配置,但什么都不起作用!

这是我HTML中写的内容:

 <meta http-equiv="Cache-Control" content="max-age=2592000, public" />
 <!--        
 <meta http-equiv="expires" content="mon, 24 sep 2012 14:30:00 GMT">
  -->

这是我 .htaccess 文件中写的内容:

ExpiresActive On
ExpiresDefault A3600

然而,当我在火狐浏览器中进行缓存清除(ctrl+F5)并刷新页面时,我的Firebug NET面板显示缓存会在我访问文件的同一秒过期(而不是未来的某个时间,这不是我想要的)。

我做错了什么?

谢谢。

1个回答

48

我建议您使用头部模块。 您可以使用以下命令激活它(如果未启用):

a2enmod headers

这是一个简单的代码示例,可以工作:

<IfModule mod_headers.c>
    # WEEK
    <FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
        Header set Cache-Control "max-age=604800, public"
    </FilesMatch>

    # WEEK
    <FilesMatch "\.(js|css|swf)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
</IfModule>

max-age是缓存时间,以秒为单位。


似乎 mod_headers.c 被关闭了。我需要向系统管理员发送请求以打开它。为什么 mod_headers.c 优先于 mod_expires.c? - Yura
好的,似乎找到了一些线索...非常奇怪,但是看起来A3720表示零。因此,如果我想要一个10分钟的过期时间,我必须写3720+600,即4320。这就解释了为什么"A3600"不起作用。然而,有人知道为什么零线是3720吗?! - Yura

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