Добрый день! Нужен совет, так как я уже сбился с ног в поиске решения, нужны свежие взгляды Использу ocstore 1.5.1.3 домен tmz.com.ua В магазине несколько тысяч товаров и пару сотен категорий. Посещаемость 1000-2000 в день Использую модуль кэширования, сайт находится на виртуальном хостинге, имеет множество личных доработок и правок, кучу модулей и т.д И при всем при этом очень тормозит. Изза этого мы теряем треть клиентов. В свое время мне удалось оптимизировать сайт и снизить скорость загрузки с 12секунд до 1,5с. Сейчас же средняя скорость загрузки страницы 10-15 секунд. Когда чищу кэш - вообще до минуты грузит. Основной корень проблемы считаю - категории. Так как недавно наш сайт хакнули хаккеры и удалили все категории, оставив при этом все товары на месте. Так вот в тот день пока категории ещё не востановил - сайт летал как бешаный. Сразу хочу заметить что запросы в контроллере на количество товаров в категориях я закоментировал. Индексы прописал, сжатие в админке стоит на 0 Что можна ещё придумать ребят? Ктонить сталкивался с этим? Начинаю подумывать о VPS но боюсь что это не решит проблему
Была схожая ситуация, но с самого начала перенесли сайт на VPS, а только потом начали оптимизировать код, после переноса производительность увеличилась где-то на 20-25%, при том что VPS весьма средний (20$ в месяц). Так что есть повод задуматься нужен ли такой прирост скорости.
ну на счёт VPS я уже точно решил что буду переезжать. Но корень проблемы явно не тут. Так как на том же хосте где у меня сайт есть другие магазины с немалой базой и они летают.
einshtein Да, заметил месяц назад эту проблему. Нагрузка создается именно из-за меню категорий. Если его убрать все работает хорошо. Проблема в том что не написан у категорий кеш. Решение приходило 2: 1) поставить статическое меню. 2) Установить кеш запросов в бд.(Внимание, кеширует все на сайте.))))
Драйвер БД Mysql с кэшированием запросов 1.0 я уже когдато ставил - лагать стало ещё больше. Сейчас ещё раз проверил, загрузка страницы - несколько минут
Незнаю, мне тогда помог, очень даже хорошо.Просто увеличил время жизни кеша хорошо. А тормазить он может только в момент открытия еще не кешированой страницы. В поисках подобного решения, если найдете что нибудь поделитесь. Если я найду выложу здесь.
акей, спасибо за подсказку, буду тестировать. Хотелось бы услышать ещё варианты. Нужно бы найти корень проблемы.
нашел тему в которой обсуждают данную проблему. Пишут что при отключенном ЧПУ количество запросов резко уменьшается. ЧПУ отключать я точно не буду так как сайт проиндексирован уже очень хорошо. Зато в этой теме дают ссылку на модуль который кэширует запросы категорий
Хм, модуль это хорошо.не видно картинок ни демо. Но про чпу, я это слышал но не вариант, все кто создают магазины требуют читабельные ссылки определенных уровней.
я иногда даже ставлю модуль...например pav blog он вроде сильно на сервер давит...и очень часто ошибка 502...интересно узнать почему...а что б товаров ного было и не тормозил надо ставить модуль http://www.opencart.com/index.php?route=extension/extension/info&extension_id=6204
А кто скажет как бороться с тормозами при загрузке страниц категорий с большим количеством товаров? У меня в модуле категорий и в меню подсчет товаров отключен в контроллерах, модель продукта оптимизирована. Так все нормально, но если в категории несколько тысяч товаров, то притормаживает, скорее всего дело в необходимости подсчета товаров для разбивки на страницы. Есть у кого-нибудь идеи как ускорить?
Это немного не то, он по идее ускоряет отдачу контента, но на генерацию страницы не влияет. Имел ввиду оптимизацию на уровне генерации, т.к. на это в моем случае уходит много времени. Нужно что-то типа кэширования запроса (cервером MySql), может как-то оптимизировать модель категории.
Тут даже постарше версия будет , если товаров много, то вряд ли поможет, надо оптимизировать код. Если не много товаров, то поможет может, но может вызвать и ошибки. У меня вообще не пашет, надо копать xml-файл, видимо.
Вот еще материал по запросам к бд в помощь. http://sourcedistillery.com/opencart_optimisation.html Если vqMod старый, советую обновить. Попробуйте добавить кэширование отдельных запросов. Точнее всего двух функций в модели продукта. PHP: public function getCategory($category_id) { $sql = "SELECT DISTINCT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'"; $sql_md = md5($sql); $cached = $this->cache->get('cat.'.$sql_md); if ($cached) { return $cached; }else{ $query = $this->db->query($sql); $this->cache->set('cat.'.$sql_md, $query->row); } return $query->row; } public function getCategories($parent_id = 0) { $sql = "SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"; $sql_md = md5($sql); $cached = $this->cache->get('cats.'.$sql_md); if ($cached) { return $cached; }else{ $query = $this->db->query($sql); $this->cache->set('cats.'.$sql_md, $query->rows); } return $query->rows; }# если магазин один, можно удалить из всех запросов во всех моделях условие store_id = 'x'# AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' Ну, и другие функции в файле тоже можно так же обработать. С этим могу помочь. Модуль seo пока что не разбирал, сказать ничего не могу. По хорошему бы провести профилирование кода и разобраться что к чему.