Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Кэширование сайта


drnemo
 Поделиться

Рекомендованные сообщения

Добрый день! Версия 3.0.2, Apache/2.4.29 (Ubuntu), модуль simple. 

Прописываю в .htaccess кэширование:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 2 days"
ExpiresByType image/jpg "access 1 week"
ExpiresByType image/jpeg "access 1 week"
ExpiresByType image/gif "access 1 week"
ExpiresByType image/png "access 1 week"
ExpiresByType text/css "access 1 week"
ExpiresByType application/pdf "access 1 week"
ExpiresByType text/x-javascript "access 1 week"
ExpiresByType application/x-shockwave-flash "access 1 week"
ExpiresByType image/x-icon "access 1 week"
ExpiresByType application/javascript "access 1 week"
ExpiresByType text/javascript "access 1 week"
</IfModule>

весь htaccess:

Спойлер

Options +FollowSymlinks
Options -Indexes
<FilesMatch "(?i)((\.tpl|.twig|\.ini|\.log|(?<!robots)\.txt))">
 Require all denied
</FilesMatch>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 2 days"
ExpiresByType image/jpg "access 1 week"
ExpiresByType image/jpeg "access 1 week"
ExpiresByType image/gif "access 1 week"
ExpiresByType image/png "access 1 week"
ExpiresByType text/css "access 1 week"
ExpiresByType application/pdf "access 1 week"
ExpiresByType text/x-javascript "access 1 week"
ExpiresByType application/x-shockwave-flash "access 1 week"
ExpiresByType image/x-icon "access 1 week"
ExpiresByType application/javascript "access 1 week"
ExpiresByType text/javascript "access 1 week"
</IfModule>

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^139\.59\.63\.78
RewriteRule (.*) https://pryazhayar.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
RewriteRule ^index\.html$ / [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]
RewriteCond %{QUERY_STRING} ^route=common/home$
RewriteCond %{REQUEST_METHOD} !^POST$
RewriteRule ^index\.php$ http://%{HTTP_HOST}? [R=301,L]

RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

 

После этого начинаются траблы в админке и магазине: например, отображение актуального статуса заказа в админке или кол-во товара только через полное обновление (ctrl+F5; как на разных ПК, так и в мобильных браузерах); корзина у пользователя показывает "старые позиции", пока принудительно не обновишь кэш. Если кэширование mod_expires.c отключаешь, то все приходит в норму. В чем могут быть причины?

p.s. сайт находится под CDN cloudflare (Caching Level - Standart, Browser Cache Expiration - respect existing headers), при отключении кэширования в CDN ситуация на сайте не меняется.

Ссылка на комментарий
Поделиться на других сайтах


Попробуйте вставить явные исключения

ExpiresActive On
ExpiresDefault "access plus 10 years"
<FilesMatch \.(html|xhtml|xml|shtml|phtml|php)$>
 ExpiresActive Off
</FilesMatch>

 

Ссылка на комментарий
Поделиться на других сайтах

1 час назад, drnemo сказал:

 

 

p.s. сайт находится под CDN cloudflare (Caching Level - Standart, Browser Cache Expiration - respect existing headers), при отключении кэширования в CDN ситуация на сайте не меняется.

 

У Cloudflare свое кэширование Не стоит об это забывать. С htaccess на вашем хосте в этом случае общается только Cloudflare.

Изменено пользователем EVMedvedev
Ссылка на комментарий
Поделиться на других сайтах


3 минуты назад, EVMedvedev сказал:

 

У Cloudflare свое кэширование Не стоит об это забывать. С htaccess на вашем хосте в этом случае общается только Cloudflare.

Та да

В настройках кеширования Cloudflare надо выставить "No Query String: Only delivers files from cache when there is no query string."

Ссылка на комментарий
Поделиться на других сайтах

28 минут назад, markimax сказал:

Та да

В настройках кеширования Cloudflare надо выставить "No Query String: Only delivers files from cache when there is no query string."

Попробую

 

32 минуты назад, EVMedvedev сказал:

 

У Cloudflare свое кэширование Не стоит об это забывать. С htaccess на вашем хосте в этом случае общается только Cloudflare.

Так при полном отключении кэширования в СDN ситуация не меняется (кэш CDN чистил), помогает только удаление кэша в .htaccess 

Ссылка на комментарий
Поделиться на других сайтах


Добавил рекомендуемую настройку в CF и кэширование в htaccess, но кэша нет... (htaccess точно обрабатывает)

image.thumb.png.27a06c0b1e9ad15a8afcdda36099e4c6.png

Ссылка на комментарий
Поделиться на других сайтах


при отключении CDN CF и рекомендациях в htaccess, которые дал @markimax , кэширование появляется (по некорректному отображению корзины и админки понаблюдаю).

Но при этом pagespeed существенно проседает по параметру "Сократите время ответа сервера (время до получения первого байта)", с CDN такого нет (магазин маленький, загрузка сервера никакая).

Изменено пользователем drnemo
Ссылка на комментарий
Поделиться на других сайтах


2 часа назад, drnemo сказал:

при отключении CDN CF и рекомендациях в htaccess, которые дал @markimax , кэширование появляется (по некорректному отображению корзины и админки понаблюдаю).

Но при этом pagespeed существенно проседает по параметру "Сократите время ответа сервера (время до получения первого байта)", с CDN такого нет (магазин маленький, загрузка сервера никакая).

Понятное дело так и будет потому, что выключается статическое кеширование "html"(в opencart оно не приемлемо)
Вам скорее всего нужна оптимизация скорости магазина или слабый хостер

Ссылка на комментарий
Поделиться на других сайтах

13 часов назад, drnemo сказал:

Попробую

 

Так при полном отключении кэширования в СDN ситуация не меняется (кэш CDN чистил), помогает только удаление кэша в .htaccess 

Вообще-то CDN и кэширование средствами веб-сервера вашего сайта - это разные вещи. CDN вообще может быть вынесен на другой домен и даже хостинг, со своим htaccess.

Ссылка на комментарий
Поделиться на других сайтах


1 час назад, markimax сказал:

Понятное дело так и будет потому, что выключается статическое кеширование "html"(в opencart оно не приемлемо)
Вам скорее всего нужна оптимизация скорости магазина или слабый хостер

Если магазин маленький - лучше отказаться от использования Cloudflare. С учетом того, что его сервера находятся где-то в США а основная масса пользователей находится как минимум в Европе, то сказываются проблемы сетей. Я лично отказался от использования Cloudflare на своем сайте и в результате получил ускорение отклика. Не стоит использовать CDN если у вас вся аудитория локализована где-то в одном месте. В таком случае лучше просто вынести статику на поддомен и настроить так, чтобы все работало cookie free.

Ссылка на комментарий
Поделиться на других сайтах


1 час назад, EVMedvedev сказал:

Если магазин маленький - лучше отказаться от использования Cloudflare. С учетом того, что его сервера находятся где-то в США а основная масса пользователей находится как минимум в Европе, то сказываются проблемы сетей. Я лично отказался от использования Cloudflare на своем сайте и в результате получил ускорение отклика. Не стоит использовать CDN если у вас вся аудитория локализована где-то в одном месте. В таком случае лучше просто вынести статику на поддомен и настроить так, чтобы все работало cookie free.

Сервер находится в США (DigitalOcean), нагрузка на проц и память не превышает 3-5%, т.к. магазин маленький.

И делема: с включенным кэшированием htaccess, но выключенным CF - speedtest - 62-81; с отключенным серверным, но включенным CF - 86-99. Субъективно визуально и так и так вроде нормально открывается

Изменено пользователем drnemo
Ссылка на комментарий
Поделиться на других сайтах


2 минуты назад, drnemo сказал:

Сервер находится в США (DigitalOcean), нагрузка на проц и память не превышает 3-5%, т.к. магазин маленький

Вопрос в том, на какую аудиторию вы работает. Например если вы тестируете gtmetrix(ом) свой сайт, то там можно оценить потери на передачу данных, если выбрать разные тестовые сервера. У меня например разница в скорости загрузки сайт на хостинге в Москве тестовыми серверами из Канады и из Великобритании отличается в разы. У меня соответственно по тестам 5 сек и 2.5 сек соответственно. А если вы работаете на территории стран СНГ, то это то же самое, что грузить страницу из Ванкувера с сайта на хосте, расположенного в Москве. То же самое с загрузкой контента браузером клиента в Москве с Cloudflare хоста в США.

Ссылка на комментарий
Поделиться на других сайтах


10 минут назад, EVMedvedev сказал:

Вопрос в том, на какую аудиторию вы работает. Например если вы тестируете gtmetrix(ом) свой сайт, то там можно оценить потери на передачу данных, если выбрать разные тестовые сервера. У меня например разница в скорости загрузки сайт на хостинге в Москве тестовыми серверами из Канады и из Великобритании отличается в разы. У меня соответственно по тестам 5 сек и 2.5 сек соответственно. А если вы работаете на территории стран СНГ, то это то же самое, что грузить страницу из Ванкувера с сайта на хосте, расположенного в Москве. То же самое с загрузкой контента браузером клиента в Москве с Cloudflare хоста в США.

да, понятно. Основные пользователи - РФ, похоже надо отключать кэширование CF.

Кстати, тот же gtmetrix будет резать оценку YSlow если нет CDN, но тут или на цифру работать или на реальное ощущение пользователя

Изменено пользователем drnemo
Ссылка на комментарий
Поделиться на других сайтах


1 час назад, drnemo сказал:

да, понятно. Основные пользователи - РФ, похоже надо отключать кэширование CF.

Кстати, тот же gtmetrix будет резать оценку YSlow если нет CDN, но тут или на цифру работать или на реальное ощущение пользователя

 

Ну с CDN в ОС чуть сложнее. Но вообще его значение для метрик не велико, так что можно не упираться в него.

Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.