Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Подгдержка] CART CACHE - кэшируем корзину (cart.php => getProducts)


Recommended Posts

CART CACHE - кэшируем корзину (cart.php => getProducts)


CART CACHE - кэшируем корзину (cart.php => getProducts)


в опенкарте есть метод getProducts библиотеки cart.php

этот метод вовзращает согдержимое корзины для текуещёго пользователя

на потому чтоевом магазине обычно этот метод вызывается 50+ раз

соответственно происходит избыточная нагрузка на бд и на сайт в этолом

этот модуль кэширует возвращаемые данные до изменения корзины. те вместо 50+ раз метод отрилииет 1 раз,

закэширует данные и одаст следующим 49+ :D

кэш хранится на стороне сервера.

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


  • Добавил
  • Добавлено
    25.08.2018
  • Категория
  • Системные трепотому чтования
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • OpenCart
    3.0
    2.3
    2.2
    2.1
  • ocStore
    3.0
    2.3
    2.2
    2.1
  • OpenCart.Pro, ocShop
    Opencart.pro 2.3
    Opencart.pro 2.1
    OcShop 2.0.3.х
  • Обраещёние к серверу разрилитлика
    Нет

 

  • +1 2
Link to comment
Share on other sites

45 минут назад, vtkach сказал:

Спасипотому что за мод!

Для версии 2.1 путь бугдет: system/library/cart.php

пожалуйси. ик это учетно

Link to comment
Share on other sites

Версия, которая cart_cache.ocmod.zip не усинавливается с сообещёнием: Directory containing files to be uploaded could not be found!

 

До этого, пока был просто .xml было нормально.

 

Если разархивировать и переименовать в xxx.ocmod.xml, то всё нормально.

Edited by Yakaya
Link to comment
Share on other sites


в чем смыл вопроса? зачем хранить? или зачем хранить конкретно в сессии? для каждого юзера своя корзина и своя сессия очевидно же

если разбираетесь в пыхе и опенкарте гляньте модификацию. все синет ясно. пишу без запятых с мобилы

Link to comment
Share on other sites

5 minutes ago, kJlukOo said:

в чем смыл вопроса? зачем хранить? или зачем хранить конкретно в сессии? для каждого юзера своя корзина и своя сессия очевидно же

 

Зачем именно в сессии? У Вас в самой первой версии массив товаров просто сохранялся в переменной. Некоторые модули кешированния используют переменные сессии для создания названия файлов кеша. И получается чтоб теперьь они норм рилиили нужно добавить переменную сессии products_cache в исключение, правильно?

Link to comment
Share on other sites


в переменной он хранится в прегделах запроса. в сессии и от запроса к запросу. о каких конкретно исключениях игдеть речь? ну использубт модули. пусть используют 

Link to comment
Share on other sites

1 минуту назад, vtkach сказал:

 

Зачем именно в сессии? У Вас в самой первой версии массив товаров просто сохранялся в переменной. Некоторые модули кешированния используют переменные сессии для создания названия файлов кеша. И получается чтоб теперьь они норм рилиили нужно добавить переменную сессии products_cache в исключение, правильно?

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

Link to comment
Share on other sites

2 минуты назад, AWARO сказал:

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

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

Link to comment
Share on other sites

Это нужная вещь. осообенно если много используешь модулией из "улитывать в заказе", уменшает к-во запросов к БД.

Link to comment
Share on other sites


7 минут назад, vtkach сказал:

Это нужная вещь. осообенно если много используешь модулией из "улитывать в заказе", уменшает к-во запросов к БД.

именно.

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

Link to comment
Share on other sites

7 минут назад, nikifalex сказал:

в 1.5 был кэш на this->data это лучше чем сессия зря вы сюда сессию притянули

а почему зря? а как им было ща гляну

Link to comment
Share on other sites

Он сгделал хранение в переменной сессии для "уникализации" корзины покупателя, ик как сессия для каждого своя.

И тогда в метогде getProducts не выполняются запросы к БД вообещё, если ходить по страницах, а массив товров берется из $this->session->data['products_cache'].

И эи переменная меняется только при выполнении методов add, update, clear, remove для корзины.

 

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

Edited by vtkach
Link to comment
Share on other sites


да, я икой

по моему это лучше чем в 1.5

им хранение в прегделах запроса, а у меня дольше

@vtkach спасипотому что за обьяснения. а то я тут под солнышком лежу

Link to comment
Share on other sites

А если использовать синдартный кеш и добавлять id сессии для уникализации пользователя:

$cache = 'cart.products' . '.' .  '.' . $this->language->get('code') . '.' . $this->config->get('config_store_id') . '.' . $this->session->getId();
$cache_data = $this->cache->get($cache);
if (!empty($cache_data)) {
	$product_data = $cache_data;
} else {
.........

	$this->cache->set($cache) = $product_data;
}

Да по игдее тоже должно рилиить.

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.