Не работает кеш на стороне пользователя

12
FN
На сайте с 12.12.2012
Offline
33
6708

Всем привет! Ребят у меня проблемка. не работает кеш на стороне пользователя.

В .htaccess добавляю это:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>

Пробовал так же и это:

# Cache-Control
<ifModule mod_headers.c>
# 30 дней
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 30 дней
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>
# 2 дня
<filesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>
# 1 день
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>

Но безрезультатно. Сайт developers.google.com показывает, что кеш не используется!

php info показывает. что mod_expires и mod_headers включены.

Парни помогите пожалуйста, я в этом новичок. Может еще, что нибудь где-нибудь надо включить?

У меня связка ngnix+Apache

[Удален]
#1

Посмотрите в пейджспид, что именно не кешируется. Пейджспид достаточно тупорылый инструмент. Настоятельно не рекомендую использовать его как библию. Он подходит чисто, чтобы грубо оценить, что реально нужно оптимизировать. Если у Вас картинки можно ужать на 5 мб. то это надо сделать, а если надо сжать какой-то css, что сэкономит 900 байт то нужно забить.

FN
На сайте с 12.12.2012
Offline
33
#2

Вот что pagespeed выдает:

Исправьте обязательно:
Используйте кеш браузера
Если указывать в заголовках HTTP дату или срок действия статических ресурсов, браузер будет загружать уже полученные ранее ресурсы с локального диска, а не из Интернета.
eiweb
На сайте с 08.11.2014
Offline
82
#3

Скорее всего требуется внести изменения в nginx.conf

Если у Вас VPS, посмотрите наличие записи в файле nginx.conf (для location) - expires 360d; (как пример).

Можно прописать вместо 360d - max или установить свое количество дней и т.д.

Так же можно использовать Cache-Control

VPS сервер (https://hosteiweb.com) в Европе и США - от €3.43 /мес. (базовое администрирование)
FN
На сайте с 12.12.2012
Offline
33
#4
eiweb:
Скорее всего требуется внести изменения в nginx.conf
Если у Вас VPS, посмотрите наличие записи в файле nginx.conf (для location) - expires 360d; (как пример).
Можно прописать вместо 360d - max или установить свое количество дней и т.д.
Так же можно использовать Cache-Control

Нет там вообще такого!

---------- Добавлено 27.08.2016 в 01:49 ----------

Так же можно использовать Cache-Control

А можно подробнее?

Как на этом сайте: http://www.sysmasters.net/kb/ispolzovanie-kesha-na-storone-brauzera-nginx/ ?

Забыл упомянуть, у меня связка ngnix+Apache

Samail
На сайте с 10.05.2007
Offline
361
#5
FinN73:
Вот что pagespeed выдает:
Исправьте обязательно:
Используйте кеш браузера
Если указывать в заголовках HTTP дату или срок действия статических ресурсов, браузер будет загружать уже полученные ранее ресурсы с локального диска, а не из Интернета.

А ниже что? Может он пишет про скрипт метрики или Адсенса.

L
На сайте с 07.12.2007
Offline
351
#6
FinN73:
Но безрезультатно. Сайт developers.google.com показывает, что кеш не используется!

Зачем вам левые сервисы(пусть даже и гуглёвские), которые показывают хрен знает что?

Смотрите в консоли браузера, присылает ваш сервер заголовки Expires или нет. Если присылает, и они правильные - браузер будет кэшировать на стороне пользователя.

L
На сайте с 10.02.2015
Offline
222
#7

Может статиту стоит отдавать nginx-ом напрямую (и оно у Вас скорее так и есть)?

Пропишите что-то вроде:

location ~ \.(css|js|png|gif|ico|jpeg|jpg|bmp|htm|html|doc|swf|xls|zip|wml|wmlc|wmls|wmlsc|wbmp|avi|fla|flv|mpg|mpeg|mp3|pdf|woff|eot|otf|svg|ttf)$ {
expires 30d;
}
eiweb
На сайте с 08.11.2014
Offline
82
#8
FinN73:
Так же можно использовать Cache-Control
А можно подробнее?

Прописываете примерно следующее:

Cache-Control "max-age=31536000, public"; 

Заголовки ответов Cache-Control включают:

  • max-age=[секунды] - описывает максимальный период времени, в течение которого контент остается свежим. Аналогично Expires, эта директива указывает время, относительное моменту запроса, а не абсолютную величину. [секунды] - количество секунд от момента запроса, в течение которых вы хотите, чтобы контент трактовался как свежий.
  • s-maxage=[секунды] - подобен max-age, отличаясь тем, что применяется только к общему кэша (т.е. прокси).
  • public - помечает авторизованные запросы, как кэшируемые; это нормально, если требуется HTTP-аутентификация, ответы автоматически становятся приватными.
  • private - позволяет кэшу, который действует для определенного пользователя (т.е. в браузере) хранить ответ; общему кэшу (т.е. прокси) - нет.
  • no-cache - принуждает кэш отправлять запрос на исходный сервер каждый раз для валидации, прежде чем выдать кэшированную копию. Это полезно, когда необходимо гарантировать, что аутентификация принята во внимание (в сочетании с public) или для поддержания жесткой свежести без потери преимуществ кэширования.
  • no-store - указывает кэшу не сохранять копию контента, ни при каких условиях.
  • must-revalidate - сообщает кэшу, что он должен подчиниться любой свежей информации, что вы ему предоставляете о контенте. HTTP позволяет кэшу хранить устаревший контент при определенных условиях; упомянув этот заголовок, вы сообщаете кэшу, что вы хотите, чтобы он строго следовал вашим правилам.
  • proxy-revalidate - подобен must-revalidate, кроме того, что применяется только к прокси.

Если на Вашем VPS установлена панель VestaCP

то путь к файлу будет таким:

vi /home/имя_пользователя/conf/web/nginx.conf

Надеюсь, что подробно описал. Если будут вопросы, обращайтесь! 🍿

Или приходите к нам, все настроим: vps сервер

FN
На сайте с 12.12.2012
Offline
33
#9

Samail, Вот что пишет:

http://vk.com/fonts/opensans300.woff (не указан срок действия)
http://vk.com/fonts/opensans400.woff (не указан срок действия)
http://vk.com/fonts/opensans600.woff (не указан срок действия)
http://vk.com/fonts/opensans700.woff (не указан срок действия)
и еще несколько скриптов на сайте моем и изображений

Ladycharm, Подскажи пожалуйста как можно посмотреть?

livetv, expires - такого слова даже нет в конфиге, искал нотепадом ++

eiweb, Тяжко будет это все делать. Пока времени нет, позже попробую, что-нибудь сделать. Правда еще все зависит от ответа Ladycharm, может действительно кеш уже идет...

Парни спасибо вам большое за ваши ответы!

P.S. у меня дедик)

[Удален]
#10
FinN73:
Вот что пишет:

Это внешние ресурсы. Пусть их вк кеширует

12

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