Перейти к содержанию

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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Tvorchestvo сказал:

а с симплой совместим ?

да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
45 минут назад, vtkach сказал:

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

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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, dexion сказал:

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

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

Поделиться сообщением


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

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

 

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

 

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

Изменено пользователем Yakaya

Поделиться сообщением


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

блин, пустую папку аплод надо добавить. это все для срвместимости с 3х

Поделиться сообщением


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

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

Поделиться сообщением


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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 minutes ago, kJlukOo said:

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

 

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

Поделиться сообщением


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, vtkach сказал:

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, AWARO сказал:

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

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

Поделиться сообщением


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, vtkach сказал:

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

именно.

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

Поделиться сообщением


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 минут назад, nikifalex сказал:

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

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

Поделиться сообщением


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

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

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

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

 

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

Изменено пользователем vtkach

Поделиться сообщением


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

да, я такой

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

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

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

Поделиться сообщением


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

А если использовать стандартный кеш и добавлять 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;
}

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От ArtemPitov
      1 050.00 руб · Срок продления: 500.00 руб за 360 дней
      Скачать/Купить дополнение


      Брошенная корзина + вечная корзина + редактор корзин
      Будет работать с симплой, собирает заказы гостей, после окончания периода лицензии модуль будет работать 
       
      Дополнения предназначено для сбора, обработки и рассылки уведомлений о забытых корзинах. 
      Система отслеживает добавления и изменения товаров в корзине, а также оформления заказа, тем самым собирает информацию о забытых или не до конца оформленных заказах. 
      Опираясь на статистические данные, около 70 – 80% корзин интернет-магазина остаются брошенными, а в реалиях OpenCart с временем жизни корзины для гостей не более часа статистика может быть еще хуже. Для борьбы с этой проблемой была разработана система, включающая в себе сбор, восстановления и хранения товаров в корзине покупателя.
       
      Демо:
      admin  
      Модуль собирает:
       Информация о покупателе. ФИО, Номер телефона, Email, Магазин в котором оформлялся заказ (актуально для мультимагазинов), язык магазина (актуально для мультиязычных магазинов). Сохранения данных корзины. Собираются все стандартные данные корзины OpenCart.  
      Возможности:
      Отправка email уведомлений. Рассылка сообщений клиентам о забытых заказах с возможною добавления купона и повторных отправок оповещений, учитывается язик и магазин в котором находится потерянная корзина. Восстановления корзины по ссылке. Позволяет восстановить корзину по ссылке, для постоянных клиентов с авторизацией. Во время формирования ссылки используется два ключа шифрования, первый внешний которые вы можете указать в настройках, второй системный.   Не ограничено хранения товаров в корзине. Метка корзины хранится в cookie, у каждого покупателя индивидуальная и зашифрованная внутренним и внешним кличем. Для мультимагазина формируются индивидуальные метки. Рассылка уведомлений. Предусмотрена автоматическая (cron) или ручная рассылка уведомлений, дополнительно в целях безопасности защищена секретным кличем который формируется для каждой копии модуля индивидуально.  
      Установка:
       Инструкция по установке доступна при скачивание модуля   
      Технические требования:
      PHP версии 5.6 или выше OpenCart и другие сборки версий 2.х  IonCube 10  
      Лицензия
       
       
      Добавил ArtemPitov Добавлено 23.04.2018 Категория Покупки, оформление заказа, корзина Системные требования Ioncube Loader 10, php 5.6 и выше Сайт разработчика http://pitov.pro Старая цена Метод активации По запросу в ЛС 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.х  
    • От ArtemPitov
      Будет работать с симплой, собирает заказы гостей, после окончания периода лицензии модуль будет работать 
       
      Дополнения предназначено для сбора, обработки и рассылки уведомлений о забытых корзинах. 
      Система отслеживает добавления и изменения товаров в корзине, а также оформления заказа, тем самым собирает информацию о забытых или не до конца оформленных заказах. 
      Опираясь на статистические данные, около 70 – 80% корзин интернет-магазина остаются брошенными, а в реалиях OpenCart с временем жизни корзины для гостей не более часа статистика может быть еще хуже. Для борьбы с этой проблемой была разработана система, включающая в себе сбор, восстановления и хранения товаров в корзине покупателя.
       
      Демо:
      admin  
      Модуль собирает:
       Информация о покупателе. ФИО, Номер телефона, Email, Магазин в котором оформлялся заказ (актуально для мультимагазинов), язык магазина (актуально для мультиязычных магазинов). Сохранения данных корзины. Собираются все стандартные данные корзины OpenCart.  
      Возможности:
      Отправка email уведомлений. Рассылка сообщений клиентам о забытых заказах с возможною добавления купона и повторных отправок оповещений, учитывается язик и магазин в котором находится потерянная корзина. Восстановления корзины по ссылке. Позволяет восстановить корзину по ссылке, для постоянных клиентов с авторизацией. Во время формирования ссылки используется два ключа шифрования, первый внешний которые вы можете указать в настройках, второй системный.   Не ограничено хранения товаров в корзине. Метка корзины хранится в cookie, у каждого покупателя индивидуальная и зашифрованная внутренним и внешним кличем. Для мультимагазина формируются индивидуальные метки. Рассылка уведомлений. Предусмотрена автоматическая (cron) или ручная рассылка уведомлений, дополнительно в целях безопасности защищена секретным кличем который формируется для каждой копии модуля индивидуально.  
      Установка:
       Инструкция по установке доступна при скачивание модуля   
      Технические требования:
      PHP версии 5.6 или выше OpenCart и другие сборки версий 2.х  IonCube 10  
      Лицензия
       
       
    • От Maklaosdelay
      300.00 руб
      Скачать/Купить дополнение


      PimPay платежная система на opencart 3.x.x
      Модуль для приема платежей на сайт системой оплат PimPay
       
      Установка:
      1) Зайти в панель управления -> Расширения -> Установка расширений -> загрузить
      2) Зайти в модули -> оплата -> PimPay и активировать
      3) Настроить модуль и принимать платежи =)
       
      Настройка:
      1) Ввести shop id и Secret из личного кабинета PimPay
      2) В личном кабинете PimPay ввести URL адрес обратного вызова магазина (из настроек модуля)
      3) Выбрать статусы заказов после (оплаты, неуспешной оплаты, возврата), нижняя граница и географические зоны на свой выбор
      4) Статус поставить на включено
       
      Прибыльных вам сделок 
      Добавил Maklaosdelay Добавлено 15.12.2018 Категория Платежные системы Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore 3.0 OpenCart.Pro, ocShop Несовместим  
    • От Maklaosdelay
      Модуль для приема платежей на сайт системой оплат PimPay
       
      Установка:
      1) Зайти в панель управления -> Расширения -> Установка расширений -> загрузить
      2) Зайти в модули -> оплата -> PimPay и активировать
      3) Настроить модуль и принимать платежи =)
       
      Настройка:
      1) Ввести shop id и Secret из личного кабинета PimPay
      2) В личном кабинете PimPay ввести URL адрес обратного вызова магазина (из настроек модуля)
      3) Выбрать статусы заказов после (оплаты, неуспешной оплаты, возврата), нижняя граница и географические зоны на свой выбор
      4) Статус поставить на включено
       
      Прибыльных вам сделок 
    • От MaxD
      Скачать/Купить дополнение


      OpenCart Lightning
       

       
      OpenCart Lightning - это мод для ускорения работы магазинов. Он использует целый ряд технологий и ноу-хау.
      Работает со всеми версиями OpenCart и ocStore.
       
      Вот ссылка на демо-магазин с 20000 товаров на хостинге DigitalOcean за $5 - http://demo.devs.mx/lightning
      почти мгновенное открытие страниц оптимизировано для получения высоких показателей в новом Google PageSpeed Insigts (осень 2018) быстрая работа с большим количеством товаров и категорий повышение удобства навигации по магазину и рейтингов в поисковиках не надо настраивать и приглядывать, просто работает отпадает необходимость в дополнительных модах оптимизации или кеширования  
       
       
       
       
      Если вы залогинены в админку - страницы, на которые вы заходите - после этого перегенерируются. То есть, если вы хотите увидеть изменения - просто обновите страницу.
      В большинстве случаев нет необходимости очищать кеш вручную - все обновляется автоматически.
       
      После установки у вас будет 7 дней тестового периода, дальше надо будет купить лицензию.
      Про покупке есть возможность заказать платную проверку магазина и настройку Lightning.
       
      Внимание: OpenCart Lightning не работает на localhost, только на реальных интернет-серверах.
       
      Установка
      Загрузите lightning.ocmod.zip в инсталлятор, зайдите в Модификации и обновите их.
       
      Обновление
      1. Выключите Lightning.
      2. Очистите кеш Lightning.
      3. Зайдите в Модификации и удалите модификацию Lightning.
      4. Если вы обновляетесь с Lightning 1.xx или 2.хх, удалите папку system/lightning
      4. Установите новую версию Ligthning.
      5. Обновите Модификации.
      6. Включите Lightning.
      .
      Добавил MaxD Добавлено 04.12.2014 Категория Кэширование, сжатие, ускорение Системные требования Сайт разработчика http://lightning.devs.mx/ Старая цена Метод активации Автоматическая активация 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
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.