Какое кэширование по времени для Cache-Control в Apache через .htaccess лучше поставить?

Dmitriy_2014
На сайте с 01.07.2014
Offline
276
632

Всем привет!

Необязательно для веб-сервера Apache, это может быть и nginx, интересно узнать какие сейчас промежутки времени ставят для кэширования картинок, текста, стилей, скриптов и т.п. у браузеров.

Вот нашел тут пример правда трехлетней давности, может что-то изменилось: https://toster.ru/q/107819


<ifModule mod_expires.c>
ExpiresActive On
#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 5 seconds"
#кэшировать флэш и изображения на месяц
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
#кэшировать css, javascript и текстовые файлы на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"
#кэшировать html и htm файлы на один день
ExpiresByType text/html "access plus 43200 seconds"
#кэшировать xml файлы на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

Нормально ли для изображений и графики на месяц ставить?

Для стилей и скриптов на неделю?

Для text/html на один день?

Для xml на десять минут?

Заранее всем спасибо за ответы!

suffix
На сайте с 26.08.2010
Offline
325
#1

У меня так:


<IfModule*mod_expires.c>
ExpiresActive*on
ExpiresDefault*"access*plus*1*month"
ExpiresByType*image/x-icon*"access*plus*2592000*seconds"
ExpiresByType*image/jpeg*"access*plus*2592000*seconds"
ExpiresByType*image/png*"access*plus*2592000*seconds"
ExpiresByType*image/gif*"access*plus*2592000*seconds"
ExpiresByType*application/x-shockwave-flash*"access*plus*2592000*seconds"
ExpiresByType*text/css*"access*plus*604800*seconds"
ExpiresByType*text/javascript*"access*plus*216000*seconds"
ExpiresByType*application/javascript*"access*plus*216000*seconds"
ExpiresByType*application/x-javascript*"access*plus*216000*seconds"
ExpiresByType*text/html*"access*plus*600*seconds"
ExpiresByType*application/xhtml+xml*"access*plus*600*seconds"
</IfModule>
Клуб любителей хрюш (https://www.babai.ru)
Dmitriy_2014
На сайте с 01.07.2014
Offline
276
#2

Если я не задаю время кеширования для text/html то это равносильно cache-control: no-cache, или cache-control: no-store?

fliger
На сайте с 17.09.2015
Offline
106
#3

Исходите из того, как часто изменяется содержимое. Если text/html меняется каждый день, то 86400, если нет, то можно и неделю поставить - 604800, а то и месяц - 2592000.

Dmitriy_2014
На сайте с 01.07.2014
Offline
276
#4

fliger,

Просто заметил, что у популярных сайтов не используется этот кеш для content-type: text/html, если я правильно понял, наверное, из-за того чтобы циферки обновлялись сразу или тому подобное.

Например, у некоторых:

vc - cache-control: no-cache, private

pikabu - cache-control: no-cache

hh - cache-control: no-cache, no-store

3dnews - Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#5
Просто заметил, что у популярных сайтов не используется этот кеш

Сессия обнуляет кэш.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
D8
На сайте с 23.03.2007
Offline
150
#6

вот cache-control

<ifModule mod_headers.c>

#кэшировать HTML и HTM файлы на один день

<FilesMatch "\.(html|htm)$">

FileETag -INode MTime Size

Header set Cache-Control "max-age=43200"

</FilesMatch>

#кэшировать CSS, JavaScript и текстовые файлы на одну неделю

<FilesMatch "\.(js|css|txt)$">

FileETag -INode MTime Size

Header set Cache-Control "max-age=604800"

</FilesMatch>

#кэшировать изображения на месяц

<FilesMatch "\.(ico|gif|jpg|jpeg|png)$">

FileETag -INode MTime Size

Header set Cache-Control "max-age=2592000"

</FilesMatch>

#отключить кэширование

<FilesMatch "\.(php|cgi|spl|scgi|fcgi)$">

Header unset Cache-Control

</FilesMatch>

</IfModule>

а у вас expires

Dmitriy_2014
На сайте с 01.07.2014
Offline
276
#7

Denzel82,

А зачем использовать перезаписывание заголовков, если тот-же mod_expires генерирует заголовок Cache-Control с нужным временем max-age=2592000 и для нужных MIME-типов файлов?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий