Jump to content
kJlukOo

[Поддержка] 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
  • Категория
  • Системные требования
  • Сайт разработчика
    https://awaro.ru
  • Старая цена
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • OpenCart
    3.0
    2.3
    2.2
    2.1
    2.0
  • 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

Share this post


Link to post
Share on other sites

Спасибо за мод!

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

Share this post


Link to post
Share on other sites
45 минут назад, vtkach сказал:

Спасибо за мод!

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

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

Share this post


Link to post
Share on other sites
8 минут назад, dexion сказал:

@kJlukOo а для 1.5 это тоже актуально?

это мелкая фича. можно и не заморачиваться

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

А какой смысл сохранять в сессии?

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
5 minutes ago, kJlukOo said:

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 минуту назад, vtkach сказал:

 

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

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

Share this post


Link to post
Share on other sites
2 минуты назад, AWARO сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
7 минут назад, vtkach сказал:

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

именно.

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
7 минут назад, nikifalex сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Edited by vtkach

Share this post


Link to post
Share on other sites

да, я такой

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

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

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

Share this post


Link to post
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;
}

Так по идее тоже должно работать.

Share this post


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
You are posting as a guest. If you have an account, please sign in.
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.


  • Similar Content

    • By legioner26
      399.00 руб
      Скачать/Купить дополнение


      Сортировка товаров в заказе по категориям с учетом остатков
      Разработан модификатор с сортировкой товаров в заказе по категориям в админ панели, в пользовательской части, в письме заказчику и письме администратора магазина.
      Данный функционал в разы упрощает работу менеджеров в подборе номенклатуры для выставления счетов.
      Так же в админке в заказах добавлена колонка производителя, фото товара и учет остатков по складу с возможностью сохранять выбор.
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
       
      Добавил legioner26 Добавлено 27.12.2017 Категория Покупки, оформление заказа, корзина Системные требования Сайт разработчика Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 800  
    • By legioner26
      Разработан модификатор с сортировкой товаров в заказе по категориям в админ панели, в пользовательской части, в письме заказчику и письме администратора магазина.
      Данный функционал в разы упрощает работу менеджеров в подборе номенклатуры для выставления счетов.
      Так же в админке в заказах добавлена колонка производителя, фото товара и учет остатков по складу с возможностью сохранять выбор.
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
       
    • By legioner26
      350.00 руб
      Скачать/Купить дополнение


      Склеивание картинок из менеджера изображений
      Разработан модификатор который позволяет склеивать изображения из одиночных картинок прямо из менеджера изображений в админ панели, с автоматическим добавлением. Регистронезависимость расширений файлов (jpg - JPG, png - PNG, jpeg - JPEG).
      После склеивания создается новая картинка имя которой состоит из (имя1-ой_имя2-ой.jpeg)
       
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
      ИНСТРУКЦИЯ во вложении
       
       
      Добавил legioner26 Добавлено 23.01.2018 Категория Инструменты, утилиты Системные требования Сайт разработчика Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 0  
    • By legioner26
      Разработан модификатор который позволяет склеивать изображения из одиночных картинок прямо из менеджера изображений в админ панели, с автоматическим добавлением. Регистронезависимость расширений файлов (jpg - JPG, png - PNG, jpeg - JPEG).
      После склеивания создается новая картинка имя которой состоит из (имя1-ой_имя2-ой.jpeg)
       
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
      ИНСТРУКЦИЯ во вложении
       
       
    • By louise170
      800.00 руб
      Скачать/Купить дополнение


      Доставка Плюс
      Модуль позволяет создавать произвольное количество различных способов доставки.

      Возможности:
      Для каждой доставки можно задавать цену в своей валюте. Создание доставок в зависимости от стоимости и веса заказа. Фильтрация по регионам, городам, группам покупателей, весу и стоиомсти заказа. К цене заказа можно добавить стоимость обработки заказа. В качестве суммы заказа можно брать либо сумму только за товары, либо сумму за товары с учетом скидок, купонов, налогов, кредита и т.п. При нулевой цене можно задать свой любой текст, который покупатели увидят вместо цены. Скидки-наценки на доставки прямо внутри модуля, так, чтобы покупатель видел уже конечную стоимость доставки. Отображение описания доставки только для выбранной доставки или всегда независимо от того какая доставка выбрана. Возможность добавить свои скрипты для каждой из доставок (так можно, например, сделать отображение карты). При совместной работе с модулем Группы товаров можно задавать сложную логику отображения доставок в зависимости от входящих в корзину товаров, например, можно задать, чтобы доставка отображалась только тогда, когда в корзине есть хотя бы один товар из группы A и ни одного товара из группы B. Никакие системные файлы не затираются, модуль работает на vqmod/ocmod.

      Модуль тестировался на OpenCart:
      1.5.2.1 1.5.4.1 1.5.5.1 1.5.6 1.5.6.4 2.0.0.0 2.0.1.1 2.1.0.1 2.2.0.0 2.3.0.2 3.0.2.0 Ocstore: 2.3.0.2
      Maxystore: 2.0.3.1
      Модуль "Доставка Плюс" совместим с модулем упрощенной регистрации и заказа Simple и модулем Группы товаров.
      Для второго Опенкарта модуль "Доставка Плюс" совместим с оформлением заказа fastorder, oct_fastorder (шаблоны Shop-store2 и Luxury).
       
      Поддерживаемые языки
      русский английский украинский
        Пример работы модуля
      http://ocstore1541.opencartplus.ru/
      http://opencart2200.opencartplus.ru/
      http://ocstore2302.opencartplus.ru/
      http://opencart3020.opencartplus.ru/

      Демо админки
      http://ocstore1541.opencartplus.ru/admin/
      http://opencart2200.opencartplus.ru/admin/
      http://ocstore2302.opencartplus.ru/admin/
      http://opencart3020.opencartplus.ru/admin/
       
      доступ
      demo / demo

      Лицензия
      При покупке данного модуля, Вы получаете право установки его на один домен. Лицензионный ключ можно получить по запросу на e-mail, который вы увидите на странице модуля, после его установки.

      Установка
      Инструкция по установке находится в архиве модуля в папке readme.

      Требования к серверу
      На хостинге должен быть PHP 5.6 или выше. На хостинге должен быть установлен ionCube Loader версии 10.0 или выше. Чтобы проверить его наличие скачайте этот файл, разархивируйте его содержимое и закачайте в корневую директорию Вашего сайта. После этого откройте в браузере http://ваш_домен/test_ioc_php.php
      Настройка
      Для привязки способов оплаты к способам доставки в модуле Simple можно использовать следующие названия dostavkaplus.sh1, dostavkaplus.sh2, dostavkaplus.sh3 и т.д.

      FAQ
      FAQ по модулю "Доставка плюс" FAQ общие вопросы по Опенкарту Добавил louise170 Добавлено 18.06.2013 Категория Доставки Системные требования PHP 5.6+, IonCube Loader версии 10.0+, для Опенкарт 1.5.х - VQMOD не ниже версии 2.4.1 Сайт разработчика Метод активации Автоматическая активация Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Да Старая цена  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.