Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Добрый день! Версия 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 

Надіслати
Поділитися на інших сайтах


при отключении 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.