9

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

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

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

4

2 回答 2

10

您可以使用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>
于 2010-03-24T15:14:07.087 回答
3

请注意,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>
于 2018-03-29T18:21:05.420 回答