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

Оптимизация движка под 120 000 товаров


 Поделиться

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

может и не панацея... предложите свое решение? у вас есть метод решения скорости работы opencart на 100-150К товаров путем оптимизации именно движка, запросов и так далее а не оптимизации сервера... так как я например на шаред сижу... и там ничего не наоптимизируешь...

 

есть решения или нет?

Одной оптимизацией движка много не добьешься. Повышение быстродействия работы сайта - комплексная задача. А если вы при 100к товара не можете себе позволить что-то большее чем шаред-хостинг, то может лучше бизнес, а не сайт, оптимизировать :-)?

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


  • 11 месяцев спустя...

У меня стоит VPS .

160 000 товаров. Много подкатегорий

Стандартный модуль Категории снес.

 

Была проблема при открытии подкатегорий. Долго грузилось.

Вычитал что надо делать оптимизацию стандартными методами mysql .

Нашел как, сделал.

блин сайт теперь весь летает тока так. и категории и подкатегории шустро открываются. 

Вот поделился свою радостью, друзья не поймут. а тут можно высказаться =)) 

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


У меня стоит VPS .

160 000 товаров. Много подкатегорий

Стандартный модуль Категории снес.

 

Была проблема при открытии подкатегорий. Долго грузилось.

Вычитал что надо делать оптимизацию стандартными методами mysql .

Нашел как, сделал.

блин сайт теперь весь летает тока так. и категории и подкатегории шустро открываются. 

Вот поделился свою радостью, друзья не поймут. а тут можно высказаться =)) 

Радостью то вы поделились, но может еще и по сути что то напишете? :) Наверняка многих заинтересует, что именно вы нашли и как выполнили оптимизацию, потому что в теме предложенных методов много, но конкретики сильно меньше

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

Радостью то вы поделились, но может еще и по сути что то напишете? :) Наверняка многих заинтересует, что именно вы нашли и как выполнили оптимизацию, потому что в теме предложенных методов много, но конкретики сильно меньше

ocstore 15521.

Модуль категорий удален вообще.

в mysql когда уже товар загружен, зашел выделил все поля в бд, с выделенным - оптимизировать.

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

да вроде и все. в vqmode стоит пару модулей, ничего лишнего. 

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


igorfelix, скажите а в админке у вас не глючит когда открываете список товаров или категорий?

категорий не очень много - они быстро открываются. а вот список товаров - немного с задержкой. ну там можно выставлят ьпоказ по 100 ед товара или по 200. а вообще я не использую это,

так как все операции с загрузкой товаров и смены цен использую модуль автоматическая обработка прайслистов. 

 

глючит когда хочу картинку поставить для категории. вот там беда.. картинок много.. он все в одну папку начинает помещать..

можно через БД картинки для категорий указать, не используя файловый менеджер. 

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


ocstore 15521.

Модуль категорий удален вообще.

в mysql когда уже товар загружен, зашел выделил все поля в бд, с выделенным - оптимизировать.

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

да вроде и все. в vqmode стоит пару модулей, ничего лишнего.

Эта оптимизация - что-то вроде дефрагментации диска, и всё. Ничего реально в запросах Вы этим не оптимизировали.

Только потому, то свой VPS, хостер не стучит по голове за превышение нагрузки на БД. А если на 160к товаров летает без оптимизации, только на индексах - похоже, у вас просто довольно мощный VPS. Благодаря ocStore - что-то кешируется, что-то оптимизирвоано в запросах.

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


Эта оптимизация - что-то вроде дефрагментации диска, и всё. Ничего реально в запросах Вы этим не оптимизировали.

Только потому, то свой VPS, хостер не стучит по голове за превышение нагрузки на БД. А если на 160к товаров летает без оптимизации, только на индексах - похоже, у вас просто довольно мощный VPS. Благодаря ocStore - что-то кешируется, что-то оптимизирвоано в запросах.

в бд честно не ковырял именно удалением звпросов. так как боюсь потом что то вылезит.

еще кстати так и не понял что дает сжатие от 0 до 9 в настройках движка. пробовал 0 стоавить, пробовал 9. не знаю что это дает. вроде как gzip сжатие включено по умолчанию на хостере. 

vps не мощный. самый дешевый. была проблема с загрузкой товаров. на обычном хостинге 4-5 часов 24000 товаров.. на vps это 10 минут примерно .

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


в бд честно не ковырял именно удалением звпросов. так как боюсь потом что то вылезит.

еще кстати так и не понял что дает сжатие от 0 до 9 в настройках движка. пробовал 0 стоавить, пробовал 9. не знаю что это дает. вроде как gzip сжатие включено по умолчанию на хостере. 

vps не мощный. самый дешевый. была проблема с загрузкой товаров. на обычном хостинге 4-5 часов 24000 товаров.. на vps это 10 минут примерно .

К производительности сайта - этот параметр отношения не имеет.

Это сжатие контента при отдаче с сервера до клиента.

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

  • 1 месяц спустя...

И все же, при отображении товаров по 64 шт на странице, скорость все равно могла быть и больше... Видел примеры сайтов с большим кол-вос товаром как то оптимизировали , что опенкарт летал как голый, но только как они это делают не понятно )) все равно скорость работы моего сайта не устраивает, есть какие то рекомендации, что можно в бл поковырять дабы ускорить работу ?))

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


  • 5 месяцев спустя...

а поиск быстрый у вас?

 

а вообще существует быстрый поиск, если колличество товаров в магазине за 150 000 ?  на opencart есть модуль поиска (не помню как называется, там 2 версии, обычная и корпорейт, типа быстрый поиск на миллионе товаров) -  кто-то его пробовал?

 

или вообще есть наработки, чтобы искал точно и быстро при большом количестве товара, от 150 000 ?

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


  • 3 года спустя...
On 3/4/2013 at 11:42 PM, toporchillo said:

Обещанная статейка.

Если хотите обсуждать ее, давайте по теме - SQL.

Я понимаю, что кэширование, VPS и все такое никто не отменял, но ДО них есть не самые быстрые SQL-запросы.

Добрый вечер!

Сделал все как у вас в статье, кроме module/category.php, у меня ocStore 3, и там нет в принципе переменных product_total

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

но судя по всему не в module/category дело, так как в нем на моей версии движка нет product_total переменной вообще

 

После этого стала появляться ошибка Notice: Undefined variable: product_total in /var/www/html/storage/modification/catalog/controller/product/category.php on line 358

и пропала навигация по страницам.

ошибка уходит, если в файле catalog/controller/product/category.php

вместо getFoundProducts() использовать стандартный getTotalProducts($filter_data);

порядок был правильный, сначала getProducts, потом только getFoundProducts

 

в чем может быть причина?

 

 

 

 

и самое грустное, что запросы из getTotalProducts вида 

SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product_to_category p2c LEFT JOIN oc_product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN oc_product p ON (pf.product_id = p.product_id)   LEFT JOIN oc_filter f ON (pf.filter_id = f.filter_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2019-08-15 17:49:00' AND p2s.store_id = '0' AND p2c.category_id = '94' AND pf.filter_id IN (76) GROUP BY p.product_id HAVING  COUNT(DISTINCT f.filter_group_id) = 1;

так и остались, хотя должны были использоваться новые, ну и как выполнялись по 0.5 сек, так и выполняются дальше по 0.5 сек

и остались они судя по всему, что вызываются под вызовом функции getCategories в файле controller/product/category.php

$results = $this->model_catalog_category->getCategories($category_id);

      foreach ($results as $result) {
        $filter_data = array(
          'filter_category_id'  => $result['category_id'],
          'filter_sub_category' => true
        );

        $data['categories'][] = array(
          'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),

это можно как-нибудь ускорить?

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


51 минуту назад, zfgad сказал:

Добрый вечер!

Сделал все как у вас в статье, кроме module/category.php, у меня ocStore 3, и там нет в принципе переменных product_total

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

но судя по всему не в module/category дело, так как в нем на моей версии движка нет product_total переменной вообще

 

После этого стала появляться ошибка Notice: Undefined variable: product_total in /var/www/html/storage/modification/catalog/controller/product/category.php on line 358

и пропала навигация по страницам.

ошибка уходит, если в файле catalog/controller/product/category.php

вместо getFoundProducts() использовать стандартный getTotalProducts($filter_data);

порядок был правильный, сначала getProducts, потом только getFoundProducts

 

в чем может быть причина?

 

 

 

 

и самое грустное, что запросы из getTotalProducts вида 


SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_product_to_category p2c LEFT JOIN oc_product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN oc_product p ON (pf.product_id = p.product_id)   LEFT JOIN oc_filter f ON (pf.filter_id = f.filter_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= '2019-08-15 17:49:00' AND p2s.store_id = '0' AND p2c.category_id = '94' AND pf.filter_id IN (76) GROUP BY p.product_id HAVING  COUNT(DISTINCT f.filter_group_id) = 1;

так и остались, хотя должны были использоваться новые, ну и как выполнялись по 0.5 сек, так и выполняются дальше по 0.5 сек

и остались они судя по всему, что вызываются под вызовом функции getCategories в файле controller/product/category.php


$results = $this->model_catalog_category->getCategories($category_id);

      foreach ($results as $result) {
        $filter_data = array(
          'filter_category_id'  => $result['category_id'],
          'filter_sub_category' => true
        );

        $data['categories'][] = array(
          'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),

это можно как-нибудь ускорить?

Можно, дорого!

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

Just now, snastik said:

Можно, дорого!

На сколько дорого?)


Я не совсем понимаю, зачем для вывода категорий нужно проводить подсчет товаров?

Или это та стандартная переменная в движке "Считать кол-во товаров"? 
У меня эта функция отключена в настройках

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


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

На сколько дорого?)


Я не совсем понимаю, зачем для вывода категорий нужно проводить подсчет товаров?

Или это та стандартная переменная в движке "Считать кол-во товаров"? 
У меня эта функция отключена в настройках

 

Вывод категорий - это не проблема.
Проблемы начинаются там, где у вас есть 10 000 товаров и начинается пагинация.

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

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

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

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

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

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

Войти

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

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

×
×
  • Создать...

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

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