Jump to content

Советы по оптимизации VaM Shop


Recommended Posts

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

  • Like 1
Link to post
Share on other sites
  • Replies 225
  • Created
  • Last Reply

Top Posters In This Topic

  • support

    98

  • Makdak

    9

  • sv

    8

  • lodos

    8

Top Posters In This Topic

Popular Posts

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

Posted Images

Пример страницы просмотра категории, в которой примерно 700 товаров и 40 подкатегорий.

Все функции активированы:

Время генерации:

Количество запросов:

Убраны неиспользуемые боксы, неиспользуемые скидки:

Время генерации: 0.17 сек.

Количество запросов: 6 запросов к базе.

Саша, а сколько было до?

Link to post
Share on other sites

Поправил, просто пишу по ходу дела, т.е. пробую всё то, о чём пишу и заношу результаты в тему.

Я вообще к тому тему создал, что не бывает хороший функционал магазина и отсутствие запросов к базе данных, всегда надо чем-то жертвовать.

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

В данном теме просто хочу рассказать как можно убрать лишний (для многих) функционал.

Link to post
Share on other sites

Ещё совет как убрать два модуля: баннеры и кто в онлайне, ниже инструкции.

Теперь данные такие:

Время генерации: 0.17 сек.

Количество запросов: 6 запросов к базе.

Link to post
Share on other sites

Вот что изменено в /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

Вот что нужно менять в /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

Небольше обновление:

Вот ещё можно поправить /includes/application_top.php

Убрать два модуля: баннеры и кто в онлайне.

Меняйте:


// include the who's online functions
vam_update_whos_online();

// split-page-results
require (DIR_WS_CLASSES.'split_page_results.php');

// auto activate and expire banners
vam_activate_banners();
vam_expire_banners();
[/code] на:
[code]
// include the who's online functions
//vam_update_whos_online();

// split-page-results
require (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

sql кэш очень кривой.

если один запрос вызывается 1000 раз. то файл с кэшем будет вызываться 1000 раз.

Link to post
Share on other sites

Не сильно снизилось.

Так сделайте лучше, кто ж против, лично меня и такой устраивает.

Link to post
Share on other sites

так это очень просто. хотябы на кол. чтений файла сэкономить

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

оперативки немного будет кушать больше. но это не страшно

Link to post
Share on other sites

Что даёт кэширование SQL в настройках магазина, если все web-сервера и так кэшируют запросы к БД?

Link to post
Share on other sites

yarbex

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

[:|||||||:]

Смысл в том, что при каждом обращении к странице не делается запрос в базу, а читается из кэш файла результат, если у хостера медленный MySQL, то кэширование SQL помогает.

Link to post
Share on other sites

просто вот это

Время генерации: 0.17 сек.

анриал

у меня при включении кэширования sql запросов сильно подскакивает до 2-20 секунд.

как на локальном так и на хостинге.

видимо ты тестил на мощной системе.

Link to post
Share on other sites

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

Link to post
Share on other sites

yarbex

Почему на мощной, тестировал как раз на слабеньком (относительно P4 2.3, 1gb памяти, 60gb диск) стареньком компе.

Я записывал то, что внизу выводилось, ничего не придумывал, просто убрался расчёт цена для каждого товара, скидок, а это очень долго выходит.

А вообще, сервер с быстрой памятью и диском работает гораздо быстрее обычного компа.

Link to post
Share on other sites

[:|||||||:]

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

Link to post
Share on other sites

Доброго времени суток. Возникла проблемка.

Вот внес изменения как было сказано.

В 2- файлах

application_top.php

vam_price.php

Но после этих изменений, в процессе оформления заказа на странице подтверждения заказа checkout_confirmation.php

Выводится "Стоимость товара:  бесплатно"

При этом на карточке товара цена отображается нормально.

Помогите плиз, как это исправить?

Link to post
Share on other sites

А если не вносить изменений в vam_price.php

Нормально?

Да. Посмотрел только что. Если не вносить изменения, то все нормально становится.

Link to post
Share on other sites

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

И еще я пробовал вносить изменения и в product.php   Но с этим вообще что-то не то... Что-то происходит с ценами.. То есть после того как переправляешь product.php, то на страницах где выводятся карточки товаров - цены сокращаются до 1-й цифры... При этом если войти уже в карточку товара, то там цены выводятся нормальные...

Link to post
Share on other sites

Чуть поправил сообщение по правке /includes/classes/vam_price.php

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

Link to post
Share on other sites

Да вроде теперь нормально, цена в подтверждении заказа теперь выводится. Спасибо!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...