我看过的所有过期标题文章都或多或少地提供了以下解决方案:
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
但它对我没有意义,因为我知道哪些图像会改变哪些不会改变,所以我希望能够为特定的图像文件添加特定的到期日期。我该怎么做呢?
答案 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>