support 447 Опубликовано 14 января, 2010 Жалоба Share Опубликовано 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 Ссылка на сообщение Поделиться на другие сайты
buddha 0 Опубликовано 14 января, 2010 Жалоба Share Опубликовано 14 января, 2010 Пример страницы просмотра категории, в которой примерно 700 товаров и 40 подкатегорий. Все функции активированы: Время генерации: Количество запросов: Убраны неиспользуемые боксы, неиспользуемые скидки: Время генерации: 0.17 сек. Количество запросов: 6 запросов к базе. Саша, а сколько было до? Ссылка на сообщение Поделиться на другие сайты
buddha 0 Опубликовано 14 января, 2010 Жалоба Share Опубликовано 14 января, 2010 Опередил! :) Разница существенная - надо будет попробовать. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 января, 2010 Автор Жалоба Share Опубликовано 14 января, 2010 Поправил, просто пишу по ходу дела, т.е. пробую всё то, о чём пишу и заношу результаты в тему. Я вообще к тому тему создал, что не бывает хороший функционал магазина и отсутствие запросов к базе данных, всегда надо чем-то жертвовать. Чем выше возможности магазина, тем больше запросов к базе нужно делать, что б всё обсчитывать, тем в итоге медленней получается генерация итоговой страницы, чудес не бывает. В данном теме просто хочу рассказать как можно убрать лишний (для многих) функционал. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 января, 2010 Автор Жалоба Share Опубликовано 14 января, 2010 Ещё совет как убрать два модуля: баннеры и кто в онлайне, ниже инструкции. Теперь данные такие: Время генерации: 0.17 сек. Количество запросов: 6 запросов к базе. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 января, 2010 Автор Жалоба Share Опубликовано 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 Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 января, 2010 Автор Жалоба Share Опубликовано 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 Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 14 января, 2010 Автор Жалоба Share Опубликовано 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 запросов к базе. Ссылка на сообщение Поделиться на другие сайты
yarbex 0 Опубликовано 15 января, 2010 Жалоба Share Опубликовано 15 января, 2010 а без включения кэширования насколько снизилось кол. запросов? Ссылка на сообщение Поделиться на другие сайты
yarbex 0 Опубликовано 15 января, 2010 Жалоба Share Опубликовано 15 января, 2010 sql кэш очень кривой. если один запрос вызывается 1000 раз. то файл с кэшем будет вызываться 1000 раз. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 января, 2010 Автор Жалоба Share Опубликовано 16 января, 2010 Не сильно снизилось. Так сделайте лучше, кто ж против, лично меня и такой устраивает. Ссылка на сообщение Поделиться на другие сайты
yarbex 0 Опубликовано 16 января, 2010 Жалоба Share Опубликовано 16 января, 2010 так это очень просто. хотябы на кол. чтений файла сэкономить один раз прочитать и в массив заталкать. при следующем запросе сначала массив проверять на наличие кэша, а потом уже из файла читать. оперативки немного будет кушать больше. но это не страшно Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 16 января, 2010 Жалоба Share Опубликовано 16 января, 2010 Что даёт кэширование SQL в настройках магазина, если все web-сервера и так кэшируют запросы к БД? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 января, 2010 Автор Жалоба Share Опубликовано 16 января, 2010 yarbex Я не думаю, что экономия на спичках даст какой-то существенный результат, для текущего кода и такой вариант вполне неплохой. [:|||||||:] Смысл в том, что при каждом обращении к странице не делается запрос в базу, а читается из кэш файла результат, если у хостера медленный MySQL, то кэширование SQL помогает. Ссылка на сообщение Поделиться на другие сайты
yarbex 0 Опубликовано 16 января, 2010 Жалоба Share Опубликовано 16 января, 2010 просто вот это Время генерации: 0.17 сек. анриал у меня при включении кэширования sql запросов сильно подскакивает до 2-20 секунд. как на локальном так и на хостинге. видимо ты тестил на мощной системе. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 16 января, 2010 Жалоба Share Опубликовано 16 января, 2010 У меня при включении кэширования sql немного увеличивается время генерации страницы, но запросов к базе конечно меньше становится. И что характерно - количество запросов на одной и той же странице (на главной например) разное в разных браузерах. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 января, 2010 Автор Жалоба Share Опубликовано 17 января, 2010 yarbex Почему на мощной, тестировал как раз на слабеньком (относительно P4 2.3, 1gb памяти, 60gb диск) стареньком компе. Я записывал то, что внизу выводилось, ничего не придумывал, просто убрался расчёт цена для каждого товара, скидок, а это очень долго выходит. А вообще, сервер с быстрой памятью и диском работает гораздо быстрее обычного компа. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 января, 2010 Автор Жалоба Share Опубликовано 17 января, 2010 [:|||||||:] Может при первом запросе время генерации увеличиться, т.е. когда кэш-файлы создаются, если в браузере нажать обновить, то при втором запросе файлы кэша уже сгенерированы и время генерации тоже должны быть меньше. Ссылка на сообщение Поделиться на другие сайты
Makdak 0 Опубликовано 17 января, 2010 Жалоба Share Опубликовано 17 января, 2010 Доброго времени суток. Возникла проблемка. Вот внес изменения как было сказано. В 2- файлах application_top.php vam_price.php Но после этих изменений, в процессе оформления заказа на странице подтверждения заказа checkout_confirmation.php Выводится "Стоимость товара: бесплатно" При этом на карточке товара цена отображается нормально. Помогите плиз, как это исправить? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 января, 2010 Автор Жалоба Share Опубликовано 17 января, 2010 А если не вносить изменений в vam_price.php Нормально? Ссылка на сообщение Поделиться на другие сайты
Makdak 0 Опубликовано 17 января, 2010 Жалоба Share Опубликовано 17 января, 2010 А если не вносить изменений в vam_price.php Нормально? Да. Посмотрел только что. Если не вносить изменения, то все нормально становится. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 января, 2010 Автор Жалоба Share Опубликовано 17 января, 2010 Сейчас гляну. Ссылка на сообщение Поделиться на другие сайты
Makdak 0 Опубликовано 17 января, 2010 Жалоба Share Опубликовано 17 января, 2010 Кстати скорость работы и правда уменьшается если вносить изменения...)) И еще я пробовал вносить изменения и в product.php Но с этим вообще что-то не то... Что-то происходит с ценами.. То есть после того как переправляешь product.php, то на страницах где выводятся карточки товаров - цены сокращаются до 1-й цифры... При этом если войти уже в карточку товара, то там цены выводятся нормальные... Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 17 января, 2010 Автор Жалоба Share Опубликовано 17 января, 2010 Чуть поправил сообщение по правке /includes/classes/vam_price.php Попробуйте, теперь нормально выводится стоимость на странице подтверждения заказа. Ссылка на сообщение Поделиться на другие сайты
Makdak 0 Опубликовано 17 января, 2010 Жалоба Share Опубликовано 17 января, 2010 Да вроде теперь нормально, цена в подтверждении заказа теперь выводится. Спасибо! Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения