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

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


Recommended Posts

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

 

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

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

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


  • 11 months later...

У меня стоит 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 month later...

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

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


  • 5 months later...

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

 

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

 

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

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


  • 3 years later...
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 товаров и начинается пагинация.

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

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

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