htaccess/mod_expires — кеширование определенных файлов

Хорошо, я проверил много веб-сайтов о том, как управлять кэш-памятью браузера с помощью файла .htaccess, но мне все еще очень непонятно.

Я хочу кэшировать определенные файлы на один месяц. В остальном, я хочу, чтобы он обновлялся каждый раз. Итак, я попытался:

<IfModule mod_headers.c> 
    Header unset Cookie
    Header unset Set-Cookie
    Header unset Cache-Control
    Header unset ETag
    FileETag none 
</IfModule>

<IfModule mod_expires.c>  
    ExpiresActive On
    ExpiresDefault "now"
    <Files "/css/jquery-ui.css">
      ExpiresDefault "access plus 1 month"
    </Files>
    <Files "/js/jquery-1.10.2.min.js">
      ExpiresDefault "access plus 1 month"
    </Files>
    <Files "/js/jquery-ui.js">
      ExpiresDefault "access plus 1 month"
    </Files>
    <Files "/js/analytics.js">
      ExpiresDefault "access plus 1 month"
    </Files>
    <Files "/matheos/img/*">
      ExpiresDefault "access plus 1 month"
    </Files>
    <Files "/img/*">
      ExpiresDefault "access plus 1 month"
    </Files>
</IfModule>

Но это не работает так, как ожидалось...

HTML корректно не кешируется, но и конкретные файлы типа jquery-ui.css, которые должны кешироваться на 1 месяц, тоже не кешируются.

В любом случае, вам это .htaccess кажется нормальным?


person Sharcoux    schedule 28.11.2014    source источник


Ответы (1)


Хорошо понял ! Правильный синтаксис для нацеливания на конкретный файл:

# to not cache css except jquery-ui.css
ExpiresByType text/css "now"
<FilesMatch "jquery-ui\\.css$">
    ExpiresByType text/css "access plus 1 month"
</FilesMatch>

Это единственный способ, который сработал для меня, по крайней мере, в случае общего хоста ovh. Я также пробовал все возможные комбинации с ExpiresDefault, но это не сработало...

person Sharcoux    schedule 01.12.2014
comment
Зачем добавлять две обратные косые черты в середине пути к файлу css? Это escape-символ, уникальный для файлов htaccess? - person xxxRxxx; 05.04.2018
comment
Да, потому что точка — это специальный символ в регулярном выражении. - person Sharcoux; 06.04.2018
comment
вам не нужен двойной экран http://httpd.apache.org/docs/current/mod/core.html#filesmatch - person chpio; 14.09.2020