Jump to content
Sign in to follow this  
drnemo

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

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 ситуация на сайте не меняется.

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites
1 час назад, drnemo сказал:

 

 

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

 

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

Edited by EVMedvedev

Share this post


Link to post
Share on other sites
3 минуты назад, EVMedvedev сказал:

 

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

Та да

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

Share this post


Link to post
Share on other sites
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 

Share this post


Link to post
Share on other sites

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

image.thumb.png.27a06c0b1e9ad15a8afcdda36099e4c6.png

Share this post


Link to post
Share on other sites

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

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

Edited by drnemo

Share this post


Link to post
Share on other sites
2 часа назад, drnemo сказал:

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

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

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

Share this post


Link to post
Share on other sites
13 часов назад, drnemo сказал:

Попробую

 

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

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

Share this post


Link to post
Share on other sites
1 час назад, markimax сказал:

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

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

Share this post


Link to post
Share on other sites
1 час назад, EVMedvedev сказал:

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

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

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

Edited by drnemo

Share this post


Link to post
Share on other sites
2 минуты назад, drnemo сказал:

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

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

Share this post


Link to post
Share on other sites
10 минут назад, EVMedvedev сказал:

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

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

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

Edited by drnemo

Share this post


Link to post
Share on other sites
1 час назад, drnemo сказал:

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

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.