Кэш опенкарта, контроллер header и баг с мета данными

12
M
На сайте с 17.06.2021
Offline
62
207
Есть тут спецы по опенкарту?)
В общем сайт супер тормозит, по 2-3 секунды получаю первый контент, кэш помогает,  но автогенерации кэша нет, то есть нужно ждать чтоб юзеры обошли страницы и создали кэш
Эту проблему решает модуль кэша и если начинаю кэшировать controller/common/header.php, глобально по сайту...  ( Если кэширую на каждой странице отдельно, ошибка с медленной загрузкой не пропадает)

Но в этом случае в кэш закидывается метаданные, можно как это в исключение закинуть метаданные? 
модуль использую jet cache se

Пробовал другие варианты, индексы для бд, кэши модулей и т.д. ничего не помогает, идеальное решение было, но заметил баг с метаданными
Нужна помощь)
Bybit крипто биржа https://partner.bybit.com/b/58507 /// Зарубежные VPS с оплатой РФ картами https://aeza.net/?ref=416422 (+15% к пополнению)
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1
makepuff :
В общем сайт супер тормозит, по 2-3 секунды получаю первый контент

Какая версия Opencart?

Сколько товаров загружено?

Виртуальный хостинг или VDS?

Какой шаблон используется? Покупной или самописный?

Индексы в БД... как вы их пробовали, если там надо собирать их по кусочкам в зависимости от версии и разности модулей, поэтому так просто там не прописать без анализа. У меня файл на 790 индексов для opencart.

Кэши нужны только, чтобы держать нагрузку, в остальных случаях надо решать проблемы с долгой загрузкой.

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

Какая версия Opencart?

Сколько товаров загружено?

Виртуальный хостинг или VDS?

Какой шаблон используется? Покупной или самописный?

Индексы в БД... как вы их пробовали, если там надо собирать их по кусочкам в зависимости от версии и разности модулей, поэтому так просто там не прописать без анализа. У меня файл на 790 индексов для opencart.

Кэши нужны только, чтобы держать нагрузку, в остальных случаях надо решать проблемы с долгой загрузкой.

3.0.3.8
36к
виртуальный, но норм, по нагрузке все ок
шаблон покупной chameleon

индексы в бд пробовал через модули, через гайды. Суммарно там их тоже получалось много, около 200

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#3

Надо смотреть запросы какие делаются в БД, что именно обрабатывается в них. Возможно надо просто прикрутить кэш в формированию меню или что-то в этом роде.

По факту всё смотрится, универсальных ответов нет. Покупные шаблоны тоже бывают разные, я много встречал, где разработчики тестировали его на 100 товарах и всё, если больше 1000 всё просто умирает, но это их не парит.

M
На сайте с 17.06.2021
Offline
62
#4
LEOnidUKG #:

Надо смотреть запросы какие делаются в БД, что именно обрабатывается в них. Возможно надо просто прикрутить кэш в формированию меню или что-то в этом роде.

По факту всё смотрится, универсальных ответов нет. Покупные шаблоны тоже бывают разные, я много встречал, где разработчики тестировали его на 100 товарах и всё, если больше 1000 всё просто умирает, но это их не парит.

да я у разрабов и заказывал, видимо они опенкарт плохо знают, до этого работали много лет и все ок, здесь прям беда
все самому приходится делать)
я понимаю что надо запросы смотреть, пару раз таким занимался, но там другое было, там запросы висели а здесь нужно отследить долгие, поэтому не получается

щас попробую файлы темы закешить
а есть решения чтоб упростить мониторинг запросов? или онли ручками в консоли?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#5
makepuff #:
а есть решения чтоб упростить мониторинг запросов? или онли ручками в консоли?

Логировать их через файл: 

system/library/db/mysqli.php

Сразу после:

public function query($sql) {

Вставить:

$nowdi = date("Y-m-d H:i:s").' 0.'.gettimeofday()["usec"];

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/sql1.txt',$nowdi.' | '.str_replace(array("\r","\n")," ",$sql)."\r\n",FILE_APPEND);


LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6
Дополнительно проверить, что за версия PHP и включен ли там Opcache
M
На сайте с 17.06.2021
Offline
62
#7
LEOnidUKG #:

Логировать их через файл: 

system/library/db/mysqli.php

Сразу после:

public function query($sql) {

Вставить:

$nowdi = date("Y-m-d H:i:s").' 0.'.gettimeofday()["usec"];

file_put_contents($_SERVER['DOCUMENT_ROOT'].'/sql1.txt',$nowdi.' | '.str_replace(array("\r","\n")," ",$sql)."\r\n",FILE_APPEND);


а можете глянуть файл? я сделал но там такая куча всего, сразу не пойму
php 7.4

M
На сайте с 17.06.2021
Offline
62
#8
1) SELECT * FROM oc_seo_url WHERE `query` = 'product/category' AND store_id = '0' AND language_id = '1'
2) 2024-01-13 20:02:34 0.135088 | SELECT c.`category_id`,c.`parent_id` FROM oc_category c WHERE c.`category_id` = 1530

открыл одну категорию, файл получился на 16к строк

1) встречается 9к+
2) встречается 5.5к+ раз
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#9
makepuff #:
1) SELECT * FROM oc_seo_url WHERE `query` = 'product/category' AND store_id = '0' AND language_id = '1'
2) 2024-01-13 20:02:34 0.135088 | SELECT c.`category_id`,c.`parent_id` FROM oc_category c WHERE c.`category_id` = 1530

открыл одну категорию, файл получился на 16к строк

1) встречается 9к+
2) встречается 5.5к+ раз

Этот файл заполняется при каждом F5, поэтому надо его удалять при каждом заходе на страницу.

M
На сайте с 17.06.2021
Offline
62
#10
LEOnidUKG #:

Этот файл заполняется при каждом F5, поэтому надо его удалять при каждом заходе на страницу.

да, я так и сделал) это за одну загрузку страницы категории, я перепроверил)
наверное поэтому так долго страница грузится, не один тяжелый запрос а просто их 20к каждый раз

12

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