support 447 Posted January 14, 2010 Report Share Posted January 14, 2010 VaM Shop является универсальными решением и наблюдая за пользователями магазина, какие возможности магазина используются, есть мнение, что всеми возможностями движка не пользуется практически никто. Данная тема актуальна в основном для достаточно крупных магазинов (условно скажем, что это магазин от 1000 товаров и 1000 уникальных посетителей в сутки), а так же для магазинов, работающих на не очень хороших хостинг-провайдерах, небольшие магазины при условии наличия хорошего хостинга работают быстро и со всем работающим функционалом. Просто дам пару советов как отключить лишний функционал, тем самым Вы ускорите работу магазина: 1. Отключайте все неиспользуемые боксы в Админке - Настройки - Боксы, к примеру: не используете статьи, faq, новости, отключайте данные боксы в Админке - Настройки - Боксы. 2. Не используете скидки магазина (групповые, скидки от количества, персональные, персональные по производителю, накопительные, специальные цены и т.д.), чуть ниже инструкции, что именно править. 3. Не используете налоги, разные валюты, разные курсы, чуть ниже инструкции, что именно править. 4. Не используете встроенный менеджер баннеров, инструмент кто в онлайне, чуть ниже инструкции, что именно править. Убрав неиспользуемый Вами функционал Вы значительно снизите количество запросов к базе данных, ускорив тем самым работу магазина. Вот реальный пример, какие результаты получаются после применения данных рекомендаций. Количества запросов при всех активированных функциях и при отключенных функциях + включённом кэше в Админке - Настройки - Кэш. В качестве примера используется VaM Shop с количеством товаров: 2000, количеством категорий: 70. Для сравнения я беру страницу просмотра категории (адрес вида http://магазин.ру/index.php?cat=X, страница со списком подкатегорий, новинок, рекомендуемых товаров из подкатегорий), в которой примерно 700 товаров и 40 подкатегорий. Время генерации страницы и количество запросов можно включить в Админке - Настройки - Логи - Показывать время парсинга страницы. Все функции активированы: Время генерации: 2.1 сек. Количество запросов к базе: 496. Результат после применения всех советов, указанных в данной теме + включённый кэш и кэш sql в Админке - Настройки - Кэш + отключение всех боксов кроме разделов в Админке - Настройки - Боксы: Время генерации: 0.06 сек. Количество запросов: 4. Оно и понятно. Вычисление всех этих скидок, разных условий расчёта цены, учёт разных валют, курсов, налогов для товаров, расчёт цен для разных групп покупателей, расчёт цены в зависимости от количества заказанных единиц товара, расчёт налогов для разных регионов, стран и т.д., всё это довольно ресурсоёмкие операции, если Вы не используете данные возможности магазина и если Вас не устраивает скорость работы магазина, просто уберите данный неиспользуемый функционал. 1. Исправления для /includes/classes/vam_price.php - http://vamshop.ru/forum/index.php?topic=4784.msg39867#msg39867 2. Исправления для /includes/classes/product.php - http://vamshop.ru/forum/index.php?topic=4784.msg39869#msg39869 3. Исправления для /includes/application_top.php - http://vamshop.ru/forum/index.php?topic=4784.msg39870#msg39870 1 Link to post Share on other sites
buddha 0 Posted January 14, 2010 Report Share Posted January 14, 2010 Пример страницы просмотра категории, в которой примерно 700 товаров и 40 подкатегорий. Все функции активированы: Время генерации: Количество запросов: Убраны неиспользуемые боксы, неиспользуемые скидки: Время генерации: 0.17 сек. Количество запросов: 6 запросов к базе. Саша, а сколько было до? Link to post Share on other sites
buddha 0 Posted January 14, 2010 Report Share Posted January 14, 2010 Опередил! :) Разница существенная - надо будет попробовать. Link to post Share on other sites
support 447 Posted January 14, 2010 Author Report Share Posted January 14, 2010 Поправил, просто пишу по ходу дела, т.е. пробую всё то, о чём пишу и заношу результаты в тему. Я вообще к тому тему создал, что не бывает хороший функционал магазина и отсутствие запросов к базе данных, всегда надо чем-то жертвовать. Чем выше возможности магазина, тем больше запросов к базе нужно делать, что б всё обсчитывать, тем в итоге медленней получается генерация итоговой страницы, чудес не бывает. В данном теме просто хочу рассказать как можно убрать лишний (для многих) функционал. Link to post Share on other sites
support 447 Posted January 14, 2010 Author Report Share Posted January 14, 2010 Ещё совет как убрать два модуля: баннеры и кто в онлайне, ниже инструкции. Теперь данные такие: Время генерации: 0.17 сек. Количество запросов: 6 запросов к базе. Link to post Share on other sites
support 447 Posted January 14, 2010 Author Report Share Posted January 14, 2010 Вот что изменено в /includes/classes/vam_price.php. Меняйте: // get products Price function GetPrice($pID, $format = true, $qty, $tax_class, $pPrice, $vpeStatus = 0, $cedit_id = 0) { // check if group is allowed to see prices if ($this->cStatus['customers_status_show_price'] == '0') return $this->ShowNote($vpeStatus, $vpeStatus); // get Tax rate if ($cedit_id != 0) { $cinfo = vam_oe_customer_infos($cedit_id); $products_tax = vam_get_tax_rate($tax_class, $cinfo['country_id'], $cinfo['zone_id']); } else { $products_tax = $this->TAX[$tax_class]; } if ($this->cStatus['customers_status_show_price_tax'] == '0') $products_tax = ''; // add taxes if ($pPrice == 0) $pPrice = $this->getPprice($pID); $pPrice = $this->AddTax($pPrice, $products_tax); if ($this->cStatus['customers_status_graduated_prices'] != '1' AND $this->GetGroupPrice($pID, 1)) { $message_old_price=GROUP_PRICE; } else { $message_old_price=RETAIL_PRICE; } // check specialprice if ($sPrice = $this->CheckSpecial($pID)) return $this->FormatSpecial($pID, $this->AddTax($sPrice, $products_tax), $pPrice, $format, $vpeStatus, $message_old_price); // check special manufacturer price if ($discount = $this->CheckManufacturerDiscount($_SESSION['customer_id'], $pID)) { return $this->FormatSpecialDiscount($pID, $discount, $pPrice, $format, $vpeStatus, $message_old_price, YOUR_PRICE, MANUFACTURER_DISCOUNT); } // check graduated if ($this->cStatus['customers_status_graduated_prices'] == '1') { if ($sPrice = $this->GetGraduatedPrice($pID, $qty)) return $this->FormatSpecialGraduated($pID, $this->AddTax($sPrice, $products_tax), $pPrice, $format, $vpeStatus, $message_old_price, YOUR_GRADUATED_PRICE, ""); } else { // check Group Price if ($sPrice = $this->GetGroupPrice($pID, 1)) return $this->FormatSpecialGraduated($pID, $this->AddTax($sPrice, $products_tax), $pPrice, $format, $vpeStatus, GROUP_PRICE, YOUR_PRICE, PERSONAL_DISCOUNT); } // check Product Discount if ($discount = $this->CheckDiscount($pID)) return $this->FormatSpecialDiscount($pID, $discount, $pPrice, $format, $vpeStatus, RETAIL_PRICE, YOUR_PRICE, PERSONAL_DISCOUNT); return $this->Format($pPrice, $format, 0, false, $vpeStatus, $pID); }[/code] на: [code] // get products Price function GetPrice($pID, $format = true, $qty, $tax_class, $pPrice, $vpeStatus = 0, $cedit_id = 0) { // add taxes if ($pPrice == 0) $pPrice = $this->getPprice($pID); return $this->Format($pPrice, $format, 0, false, $vpeStatus, $pID); } vam_price.php Link to post Share on other sites
support 447 Posted January 14, 2010 Author Report Share Posted January 14, 2010 Вот что нужно менять в /includes/classes/product.php Меняйте: $products_price = $vamPrice->GetPrice($array['products_id'], $format = true, 1, $array['products_tax_class_id'], $array['products_price'], 1);[/code] на: [code]$products_price = $array['products_price']; product.php Link to post Share on other sites
support 447 Posted January 14, 2010 Author Report Share Posted January 14, 2010 Небольше обновление: Вот ещё можно поправить /includes/application_top.php Убрать два модуля: баннеры и кто в онлайне. Меняйте: // include the who's online functionsvam_update_whos_online();// split-page-resultsrequire (DIR_WS_CLASSES.'split_page_results.php');// auto activate and expire bannersvam_activate_banners();vam_expire_banners();[/code] на: [code]// include the who's online functions//vam_update_whos_online();// split-page-resultsrequire (DIR_WS_CLASSES.'split_page_results.php');// auto activate and expire banners//vam_activate_banners();//vam_expire_banners(); Теперь данные такие: Время генерации: 0.17 сек. Количество запросов: 6 запросов к базе. Link to post Share on other sites
yarbex 0 Posted January 15, 2010 Report Share Posted January 15, 2010 а без включения кэширования насколько снизилось кол. запросов? Link to post Share on other sites
yarbex 0 Posted January 15, 2010 Report Share Posted January 15, 2010 sql кэш очень кривой. если один запрос вызывается 1000 раз. то файл с кэшем будет вызываться 1000 раз. Link to post Share on other sites
support 447 Posted January 16, 2010 Author Report Share Posted January 16, 2010 Не сильно снизилось. Так сделайте лучше, кто ж против, лично меня и такой устраивает. Link to post Share on other sites
yarbex 0 Posted January 16, 2010 Report Share Posted January 16, 2010 так это очень просто. хотябы на кол. чтений файла сэкономить один раз прочитать и в массив заталкать. при следующем запросе сначала массив проверять на наличие кэша, а потом уже из файла читать. оперативки немного будет кушать больше. но это не страшно Link to post Share on other sites
shaklov 63 Posted January 16, 2010 Report Share Posted January 16, 2010 Что даёт кэширование SQL в настройках магазина, если все web-сервера и так кэшируют запросы к БД? Link to post Share on other sites
support 447 Posted January 16, 2010 Author Report Share Posted January 16, 2010 yarbex Я не думаю, что экономия на спичках даст какой-то существенный результат, для текущего кода и такой вариант вполне неплохой. [:|||||||:] Смысл в том, что при каждом обращении к странице не делается запрос в базу, а читается из кэш файла результат, если у хостера медленный MySQL, то кэширование SQL помогает. Link to post Share on other sites
yarbex 0 Posted January 16, 2010 Report Share Posted January 16, 2010 просто вот это Время генерации: 0.17 сек. анриал у меня при включении кэширования sql запросов сильно подскакивает до 2-20 секунд. как на локальном так и на хостинге. видимо ты тестил на мощной системе. Link to post Share on other sites
shaklov 63 Posted January 16, 2010 Report Share Posted January 16, 2010 У меня при включении кэширования sql немного увеличивается время генерации страницы, но запросов к базе конечно меньше становится. И что характерно - количество запросов на одной и той же странице (на главной например) разное в разных браузерах. Link to post Share on other sites
support 447 Posted January 17, 2010 Author Report Share Posted January 17, 2010 yarbex Почему на мощной, тестировал как раз на слабеньком (относительно P4 2.3, 1gb памяти, 60gb диск) стареньком компе. Я записывал то, что внизу выводилось, ничего не придумывал, просто убрался расчёт цена для каждого товара, скидок, а это очень долго выходит. А вообще, сервер с быстрой памятью и диском работает гораздо быстрее обычного компа. Link to post Share on other sites
support 447 Posted January 17, 2010 Author Report Share Posted January 17, 2010 [:|||||||:] Может при первом запросе время генерации увеличиться, т.е. когда кэш-файлы создаются, если в браузере нажать обновить, то при втором запросе файлы кэша уже сгенерированы и время генерации тоже должны быть меньше. Link to post Share on other sites
Makdak 0 Posted January 17, 2010 Report Share Posted January 17, 2010 Доброго времени суток. Возникла проблемка. Вот внес изменения как было сказано. В 2- файлах application_top.php vam_price.php Но после этих изменений, в процессе оформления заказа на странице подтверждения заказа checkout_confirmation.php Выводится "Стоимость товара: бесплатно" При этом на карточке товара цена отображается нормально. Помогите плиз, как это исправить? Link to post Share on other sites
support 447 Posted January 17, 2010 Author Report Share Posted January 17, 2010 А если не вносить изменений в vam_price.php Нормально? Link to post Share on other sites
Makdak 0 Posted January 17, 2010 Report Share Posted January 17, 2010 А если не вносить изменений в vam_price.php Нормально? Да. Посмотрел только что. Если не вносить изменения, то все нормально становится. Link to post Share on other sites
support 447 Posted January 17, 2010 Author Report Share Posted January 17, 2010 Сейчас гляну. Link to post Share on other sites
Makdak 0 Posted January 17, 2010 Report Share Posted January 17, 2010 Кстати скорость работы и правда уменьшается если вносить изменения...)) И еще я пробовал вносить изменения и в product.php Но с этим вообще что-то не то... Что-то происходит с ценами.. То есть после того как переправляешь product.php, то на страницах где выводятся карточки товаров - цены сокращаются до 1-й цифры... При этом если войти уже в карточку товара, то там цены выводятся нормальные... Link to post Share on other sites
support 447 Posted January 17, 2010 Author Report Share Posted January 17, 2010 Чуть поправил сообщение по правке /includes/classes/vam_price.php Попробуйте, теперь нормально выводится стоимость на странице подтверждения заказа. Link to post Share on other sites
Makdak 0 Posted January 17, 2010 Report Share Posted January 17, 2010 Да вроде теперь нормально, цена в подтверждении заказа теперь выводится. Спасибо! Link to post Share on other sites
Recommended Posts