添加特定图像的过期标题

时间:2010-03-24 15:08:09

标签: .htaccess mod-expires

我看过的所有过期标题文章都或多或少地提供了以下解决方案:

ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000

但它对我没有意义,因为我知道哪些图像会改变哪些不会改变,所以我希望能够为特定的图像文件添加特定的到期日期。我该怎么做呢?

2 个答案:

答案 0 :(得分:9)

您可以使用FilesMatch,例如

<FilesMatch "\.(js|css)$">
  ExpiresActive on 
  ExpiresDefault "access plus 1 month"
</FilesMatch>

或者某些特定文件:

<FilesMatch "^(example.js|sample.css)$">
  ExpiresActive on 
  ExpiresDefault "access plus 1 month"
</FilesMatch>

答案 1 :(得分:1)

请注意,如果您已使用ExpiresDefault,则对特定文件使用ExpiresByType将无效。您需要再次使用ExpiresByType

所以这不起作用(service-worker.js仍然有+1年到期时间):

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"
    ExpiresByType application/javascript                "access plus 1 year"
    <FilesMatch "^(service-worker.js)$">
        ExpiresDefault                                  "access plus 0 seconds"
    </FilesMatch>
</IfModule>

但这可行(service-worker.js将有+0秒到期):

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"
    ExpiresByType application/javascript                "access plus 1 year"
    <FilesMatch "^(service-worker.js)$">
        ExpiresByType application/javascript            "access plus 0 seconds"
    </FilesMatch>
</IfModule>

您也可以使用Header unset Expires。无论上面设置什么,这都会删除Expires标头。您还应该修改(或删除)Cache-Control标题。似乎mod_expires设置了两者。

    <FilesMatch "^(service-worker.js)$">
        Header unset Expires
        Header set Cache-Control "max-age=0"
    </FilesMatch>