Перейти к содержанию
Форум поддержки пользователей VamShop

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


Рекомендуемые сообщения

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
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 225
  • Created
  • Последний ответ

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 запросов к базе.

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

Вот ещё можно поправить /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 запросов к базе.

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

yarbex

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

[:|||||||:]

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

анриал

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

yarbex

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

[:|||||||:]

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

В 2- файлах

application_top.php

vam_price.php

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Нормально?

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

×
×
  • Создать...