Добавьте заголовки Expires для определенных изображений - PullRequest
7 голосов
/ 24 марта 2010

Все статьи заголовков expires, на которые я смотрел, дают более или менее следующее решение:

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

Но это не имеет смысла для меня, потому что я знаю, какие из моих изображений будут меняться, а какие нет, поэтому я хочу иметь возможность добавлять конкретные даты истечения срока действия к конкретным файлам изображений. Как бы я пошел по этому поводу?

Ответы [ 2 ]

9 голосов
/ 24 марта 2010

Вы можете использовать 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 голос
/ 29 марта 2018

Обратите внимание, что использование 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>
...