0 Пользователей и 1 Гость просматривают эту тему.
  • 66 Ответов
  • 36580 Просмотров
*

ifx

  • Осваиваюсь на форуме
  • 28
  • 4 / 0
Привет!
Давно я здесь не был под своим логином. Но вот сегодня настал момент оптимизации моего небольшого магазинчика и я начал рыть...Не суть, нашел решение. Применил у себя на сайте, был потрясен результатами и удивлен что на форуме никто еще об этом не написал. Поэтому специально восстановил забытый пароль и спешу...кароче начинаем! :)

Идем вот суда:
Цитировать
/ваш_сайт/www/administrator/components/com_virtuemart/html/
там находим файл shop_browse_queries.php
открываем и ищем 61 строчку
Код
$where_clause[] = "(`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id` OR `#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_parent_id`)";
заменяем ее на
Код
$where_clause[] = "(`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id`)";
жмакаем сохранить, обновляем файл на сервере, очищаем кэши. Радуемся жизни.

Оригинальная тема на форуме виртуамарта - http://forum.virtuemart.net/index.php?topic=65103.0
Висит с января 2010 как видите..там же дальше в 3-ех страницах можете почитать благодарственные отзывы народа, с каталогом в 5000-30.000 товаров, и как у них все стало летать. К слову там же можно найти и каммент разработчика по этому поводу. А если копнуть свосем глубоко, некий малый, я так понимаю русский (нкто haword) выложил свой вариант файла shop_browse_queries.php

Кому лень копаться в коде, вот ссылки (файл приаттачить почему-то не могу)
http://slil.ru/29548397 - версия от Udo
http://slil.ru/29548399 - версия от haword

ВАЖНО: кол-во запоросов не уменьшилось. Изменилось само качество запроса.
ВАЖНО №2: чтобы уменьшить кол-во запросов к БД (тобишь кэшировать их) юзайте вот этот замечтательный компонент:
QueryCache 1.5.0 RC2 (for Joomla 1.5.x) - http://www.joomlaperformance.com/component/option,com_docman/task,cat_view/gid,41/Itemid,39/
Мануалка по установке  - http://www.joomlaperformance.com/component/option,com_easyfaq/task,view/id,28/Itemid,7/
ВАЖНО №3: Сам еще пока не проверял (в ближайшие пару часов) нашел еще вот такой интересный вариант кэша - http://forum.virtuemart.net/index.php?topic=43602.0

Обо мне:
Joomla 1.5.18
Virtuemart 1.1.4
После установки QueryCache кол-во запросов в VirtueMart при просмотре товара сократилось в 1.5 раза
После установки хака + querycache магазин стал грузится за
Цитировать
Application afterLoad: 0.000 seconds, 0.40 MB
Application afterInitialise: 0.188 seconds, 4.55 MB
Application afterRoute: 0.197 seconds, 5.46 MB
Application afterDispatch: 0.455 seconds, 18.28 MB
Application afterRender: 0.519 seconds, 19.36 MB
Успехов ребят! :)
-----------------------------

P.S. from Beagler

По просьбам трудящихся Важное замечание №0
"разумеется, при этом хаке про дочерние товары можно забыть, но если Вы их не используете - это для Вас."
« Последнее редактирование: 15.05.2011, 00:10:02 от beagler »
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Цитировать
shop_browse_queries.php
открываем и ищем 61 строчку
Код:

$where_clause[] = "(`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id` OR `#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_parent_id`)";

заменяем ее на
Код:

$where_clause[] = "(`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id`)";

жмакаем сохранить, обновляем файл на сервере, очищаем кэши. Радуемся жизни.

+1!!
*

ifx

  • Осваиваюсь на форуме
  • 28
  • 4 / 0
*

morph

  • Давно я тут
  • 923
  • 105 / 0
*

GrayHunter

  • Захожу иногда
  • 64
  • 1 / 0
Т.е. при таком хаке мы ничего не лишаемся, а скорость просто увеличивается?
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Т.е. при таком хаке мы ничего не лишаемся, а скорость просто увеличивается?
Визуально да - причем реально ощущается.
*

GrayHunter

  • Захожу иногда
  • 64
  • 1 / 0
Поясните пожалуйста как это "визуально"?

Вот предыдущий автор спросил "там проверка по дочерним товарам.с ними пробовал как работает?" - тоже интересно узнать.
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Поясните пожалуйста как это "визуально"?
Визуально - глазами в одном и том же браузере с одного и того же ИП.
*

GrayHunter

  • Захожу иногда
  • 64
  • 1 / 0
Так, скорость увеличивается. Хорошо.

А что насчёт проверки по дочерним товарам. с ними пробовали как работает?
*

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
хочу сообщить , что в рессии 1,1,5 это строка 66 и выглядит оно так
Код
$where_clause[] = "(`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id` OR `#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_parent_id`)";
} else {
$where_clause[] = "`#__{vm}_product_category_xref`.`product_id`=`#__{vm}_product`.`product_id`";

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

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

morph

  • Давно я тут
  • 923
  • 105 / 0
тоды можно описать что в томже файле можно грохать проверки на производителя,налоги,скидки,группы пользователей и т.п. что можно убрать если это не используется  ^-^. только вот не панацея-надо четко знать что если чтото убрать - что отвалиться  ^-^
*

xCoReLx

  • Захожу иногда
  • 243
  • 7 / 0
да меня тоже интересует, как всекую хпенатень отключить, которая вообще и не будеи использоваться, чтоб повысить производительность или уменьшить запросы
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
х3, врубил этот QueryCache, настроил как в факе, а он грузанул файлами сервак так, что меня отключили =)
пришлось его вырубить...
вот полезная статья ещё
*

starttext

  • Новичок
  • 3
  • 0 / 0
У меня чудеса происходят. Втянул в магазин немногим более 5000 товаров. Все нормально работает (на локлаке). Страницы категорий и товаров открываются быстро...
Как только добавляю хотя бы один дочерний товар - страницы категорий и страница любого товара открывается 3-5 мин! Как с этим бороться? Тут явно какой-то запрос к базе корявый, может кто подскажет как его вычислить?
*

starttext

  • Новичок
  • 3
  • 0 / 0
Вот, что выдает отладка:
Информация о профиле
Application afterLoad: 0.001 seconds, 0.49 MB
Application afterInitialise: 0.062 seconds, 3.96 MB
Application afterRoute: 0.083 seconds, 5.31 MB
Application afterDispatch: 150.997 seconds, 11.38 MB
Application afterRender: 151.046 seconds, 11.69 MB
Использование памяти
12345356
Зарегистрировано запросов: 408
Это нормально для Virtuemarta?
*

starttext

  • Новичок
  • 3
  • 0 / 0
Собственно вычислил запрос который 3 минуты выполняется:

Код
SELECT DISTINCT `product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`jos_vm_category`.`category_id`,
                                `jos_vm_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`, `product_url`,
                                `product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`jos_vm_product`.`mdate`, `jos_vm_product`.`cdate`
  FROM (`jos_vm_product`, `jos_vm_category`, `jos_vm_product_category_xref`,`jos_vm_shopper_group`)
  LEFT JOIN `jos_vm_product_price`
  ON `jos_vm_product`.`product_id` = `jos_vm_product_price`.`product_id`

  LEFT JOIN `jos_vm_shopper_vendor_xref`
  ON (`jos_vm_shopper_vendor_xref`.`user_id` =64
  AND `jos_vm_shopper_vendor_xref`.`shopper_group_id`=`jos_vm_shopper_group`.`shopper_group_id`)
  WHERE (`jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_id` OR `jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_parent_id`)
 
  AND `jos_vm_product_category_xref`.`category_id`=`jos_vm_category`.`category_id`
 
  AND `jos_vm_product_category_xref`.`category_id`=1
 
  AND (`jos_vm_product`.`product_id`=`jos_vm_product_price`.`product_id` OR `jos_vm_product_price`.`product_id` IS NULL)
 
  AND `product_parent_id`=0
 
  AND `product_publish`='Y'
 
  AND `category_publish`='Y'
 
  GROUP BY `jos_vm_product`.`product_sku`
 
  ORDER BY `jos_vm_product`.`product_name` ASC
  LIMIT 0, 2000

А вот, что с ним сделать... ума не приложу
*

morph

  • Давно я тут
  • 923
  • 105 / 0
а вот почему   LIMIT 0, 2000 ?
2000 товаров на страницу?

наверно в админке и когда ВСЕ в количестве вывода на страницу )
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
starttext, попробуй почисти от ненужных запросов типа product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom` итд...

не, я уже поюзал по всякому, была надежда на скорость, но никак, у всех стоит кэширование в файлы?
у меня пару деньков постоял, когда делал бекап, 5 мин разархивировал папку с кэшем этого компонента... думаю проблема именно в файлах, тк у меня их там набегает около 10к, и я представляю чего стоит найти в этой папке что-нибудь... в опция компонента есть memory cache, может через оперативную память быстрее будет работать, но под это как понимаю надо сервак достраивать... и частенько вываливались ошибки, при поиске нужного запроса, при перезагрузке страницы, ошибки исчезали, но сами понимаете каково это видеть, как только вырубил компонент, грузит в 2 раза быстрее =)
есть идеи?
« Последнее редактирование: 30.09.2010, 00:07:14 от skyscraper »
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
идей смотрю много, или никто не пользует? =)
у меня впс, на котором попробовал поставить memcache, пустил через него кеш и включил memcache в опции query cache, скорость реально почувствовал... но знающие люди посоветовали для стабильности ставить xcache без жумловского кеширования, поставил ща его, вроде всё отлично работает и летает, query cache тоже попробую протестировать на зеркальном сервере с xcache, но ещё раз повторю - никому не советую использовать кеширование через файлы, только словите тормоза и нагрузку...
*

palach1985

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Это реально работает! Сайт вместо 4-5 секунд загружается за 2! Спасибо
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
вот ещё в помощь, одно из двух:
1)...ссылка на варез удалена....
2) Плагин JCH_Optimize я не пробовал, но говорят не хуже...

я пользую webo (без query cache), ускорил так, что странички не видно как переключаются, только фотки догружаются, ну и 1-2 сек запрос в базу ...
« Последнее редактирование: 12.01.2011, 20:27:59 от _ib_ »
*

morph

  • Давно я тут
  • 923
  • 105 / 0
skyscraper, ты бы плз. писал что за WEBO к тебе в личку чтоли....да это действительно классная вещь, но она и платная ;)
*

koza777

  • Новичок
  • 8
  • 1 / 0
skyscraper можно по подробней про установку Webo Site Speed up?Приложение действительно классное но как установить чето не вьеду!где эти права на запись ставить если у меня сайт пока на localhost&
*

black#FFFFFF

  • Осваиваюсь на форуме
  • 26
  • 3 / 0
Ускорение. Ускорение. Подкидываю идейку. Расчет цены по атрибутам. Например. Столкнулся со следующим.
/administrator/com_virtuemart/clases/ps_product.php
Код
get_adjusted_attribute_price 
есть у нас такая замечательная функция. встречается она в shop.browse.php допустим. при выводе товаров. итак. что в ней плохого? а плохое в ней вот что. нет у нее аналогов для мульти ID товаров. как в нагрузку на каждый ее вызов при листинге товаров - 2-3 запроса. Это частность! Там блин куча таких функций. Приккколььььнннноооо.
И понеслась:

Для каждого товара:
Код
SELECT tax_rate
  FROM jos_vm_product, jos_vm_tax_rate
  WHERE product_tax_id=tax_rate_id
  AND product_id=

SELECT *
  FROM `jos_vm_product_files`
  WHERE `file_product_id`

SELECT amount,is_percent
  FROM jos_vm_product,jos_vm_product_discount
  WHERE product_id
..........................................

И так далее и тому подобное.

Не судьба видимо была разделить отдельно запросы и собрать ай ди товаров. Чтобы с помощью всего 2-3 запросов для всех товаров на странице получить информацию. А не по 2-3 запроса на каждый товар.

И что ж мы видим? Листинг 9 товаров. Обычный кэш включен. Ой как здорово! 168 запросов.
Эх. Надо будет переписывать весь этот бред. А что-то мне подсказывает, что их там может быть не больше 5 вне зависимости от количества товаров. Объеденение IN, выбор данных. И делай с ними что хочешь без дергания б.д.
« Последнее редактирование: 01.11.2010, 07:42:48 от black#FFFFFF »
*

morph

  • Давно я тут
  • 923
  • 105 / 0
black#FFFFFF,
да вирт действительно комбайн ). много запросов сократили и переписали функциий в joosmart-вирт под joostina(если интересно - глянь)

хорошо бы мануальчик написать где в каких файлах в каких функциях что править чтобы без урезания функционала(что по возможности,так как не меняя "структуру" файлоф вирта идеала и не добиться) сократить на порядок количество запросов,но я даже не знаю каким это боком выйдет )) - разрабам думаю перпендикулярно, а сдесь описывать и потом с каждым апдейдом поддерживать,ох геморойно  ^-^

*

mark111

  • Захожу иногда
  • 63
  • 1 / 0
Ускорение. Ускорение. Подкидываю идейку. Расчет цены по атрибутам. Например. Столкнулся со следующим.
/administrator/com_virtuemart/clases/ps_product.php
Код
get_adjusted_attribute_price 
есть у нас такая замечательная функция. встречается она в shop.browse.php допустим. при выводе товаров. итак. что в ней плохого? а плохое в ней вот что. нет у нее аналогов для мульти ID товаров. как в нагрузку на каждый ее вызов при листинге товаров - 2-3 запроса. Это частность! Там блин куча таких функций. Приккколььььнннноооо.
И понеслась:

Для каждого товара:
Код
SELECT tax_rate
  FROM jos_vm_product, jos_vm_tax_rate
  WHERE product_tax_id=tax_rate_id
  AND product_id=

SELECT *
  FROM `jos_vm_product_files`
  WHERE `file_product_id`

SELECT amount,is_percent
  FROM jos_vm_product,jos_vm_product_discount
  WHERE product_id
..........................................

И так далее и тому подобное.

Не судьба видимо была разделить отдельно запросы и собрать ай ди товаров. Чтобы с помощью всего 2-3 запросов для всех товаров на странице получить информацию. А не по 2-3 запроса на каждый товар.

И что ж мы видим? Листинг 9 товаров. Обычный кэш включен. Ой как здорово! 168 запросов.
Эх. Надо будет переписывать весь этот бред. А что-то мне подсказывает, что их там может быть не больше 5 вне зависимости от количества товаров. Объеденение IN, выбор данных. И делай с ними что хочешь без дергания б.д.


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

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


# При импорте товаров в магазин для каждого товара делают SELECT - проверяя, есть ли он в базе, а потом делают INSERT. Открою секрет - есть запрос INSERT ... ON DUPLICATE KEY UPDATE, который вместо 60000 запросов в час сделает 10 и выполнит ту же работу в 6000 раз быстрей.

 Если кто использует подобное - пожалуйста поделитесь хоть чем-то т.к. нагрузка на хостинг просто жуткая(даже с кешированием)...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поиск для магазина автозапчастей как на Exist.ru!

Автор zzaj

Ответов: 21
Просмотров: 8021
Последний ответ 11.05.2016, 13:50:02
от Pahom72
Проверка повтора email в форме регистрации магазина

Автор robert

Ответов: 1
Просмотров: 1237
Последний ответ 23.12.2012, 20:25:21
от robert
Исключение страниц магазина при показе слайдера

Автор alexspi

Ответов: 0
Просмотров: 836
Последний ответ 18.09.2012, 16:36:33
от alexspi
Хочу на этот компонент повесить как минимум два магазина!

Автор JomTime

Ответов: 0
Просмотров: 818
Последний ответ 17.02.2012, 16:17:06
от JomTime
Вывод названия категории магазина в карточку товара

Автор SolopoV

Ответов: 9
Просмотров: 3331
Последний ответ 17.02.2012, 15:15:55
от tigra-uki