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