Прошу подсказать, где есть настройки стандартного кеша CS-Cart? Некоторые блоки кешируются на совсем непродолжительное время в карточках товаров, минут 5. А после запросы к БД производятся заново. Возможно ли увеличить время хранения кеша где-то? Ресурсы свободной памяти и места на диске на сервере есть.
Кеширование работает немного по-другому. Есть условия сброса кеша. Для товарных блоков это изменения в таблицах товаров (и связанных с ними), категорий, промо-акций… Всё что может изменить контент этого блока.
Если новые товары не появлялись, а старые не изменялись… А не знаете, оформляемые заказы(списание остатков) и пересчет популярности товаров не сбрасывают кэш? Просто не очень понимаю как это работает. Мне говорили что изменение таблицы products любое сбрасывает кэш. Но не понятно от чего же он может сбрасываться в момент когда никакие изменения на сайте не производятся, выгрузка цен и остатков не производится. Есть какие-то методики выслеживания причин обновления кэша?
Специально смотрел, поздно ночью/рано утром, когда на сайте точно никого нет, даже посетителей мало, всё-равно оно так работает.
Списание влияет, так как изменяет количество товара в таблице ?:products.
Из коробки, кэш глобально зависит от настроек, модулей (установка/удаление/смена настроек), блоков, языковых переменных и промо-акций. При смене в этих таблицах будет сброшен кэш для всех блоков.
Блок товаров зависит:
Витрины, товары, описания товаров, цены, категории, опции. При этих изменениях (и просто запросах на обновление данных в бд) кэш всех товарных блоков будет сброшен.
Плюс, для каждой комбинации кукис формируется свой отдельный кеш
Но это выходит очень странный кеш, если он из коробки сбрасывается при оформлении каждого заказа. Выходит что чем больше заказов и больше трафик, тем он бесполезнее Т.е. как раз тогда, когда он нужен больше всего. Странно, выглядит не логично.
Пропорционально. Если у Вас сотни заказов, то у Вас и переходов должно быть соответствующее количество. Получается, что даже при сбросе кеша каждую минуту, будет одна генерация на 200 чтений. Если заказов мало, то кеш будет жить дольше и, опять же, будет эффективнее.
При оформлении заказа кеш сбросится, только если спишется единица товара. Если Открытый заказ не считать уменьшением (или не отслеживать количество вовсе, а присылать, скажем, из 1С), то кеш будет сбрасываться реже.
Но товаров то много, около 30 000, примерно 24к активных. Соответственно скорее выходит что большинство товаров почти всегда будут открыты впервые, за исключением нескольких.
О! Так у меня так и есть, остатки из 1С. Но я полагал что это дублирующая функция, чтобы при остатке в 100 товаров выгруженных из 1С покупатели не сделали между выгрузками 50 заказов по 20 товаров. Т.е. по идее штука всё-равно нужная. Особенно когда товары остались в штучном количестве. Остатки обновляют всего 2 раза в сутки - чаще тоже плохо, это ведь тоже кеш сбрасывает…
Отключать отслеживание - совсем не вариант, при его отключении можно купить сильно больше товаров чем есть на складе. Это большие проблемы при наличии онлайн-оплаты на сайте. А с существующими комиссиями банковскими, это еще и убытки.
большинство банков вводят холдирование. Отчасти это решает проблему. А если кеш сбрасывается по поводу оформления заказа, то это не такие уж плохие новости
У нас есть онлайн-кассы(и эта зараза по всей видимости скоро распространится по многим странам), т.е. после оплаты чек автоматом пробивается на кассе, плюс данные сразу уходят оператору фискальных данных, который в свою очередь тут же их пересылает налоговой. И такие ситуации с продажей не существующих товаров довольно нежелательны. И так есть проблемка с частичными возвратами, они не предусмотрены в стандартных модулях и вообще механиках CS-Cart и нужно что-то мудрить… ну это не про тему этого топика.
А с заказами - всё-таки не очень хорошо что кеш сбрасывается. Вернее, очень нехорошо. Выходит что большую часть времени страницы открываются впервые, со всеми запросами к БД.
Я холдирование реализовывал в модуле оплаты WayForPay (кстати не смотря на большое кол-во желающих с пожеланиями его так никто не купил). Принцип простой - после оформления заказа покупателя не перекидывает на страницу оплаты, а в админке в заказе появляется кнопка - подтвердить при нажатии на которую система оплаты отправляет покупателю ссылку на оплату (с крайним сроком, например 2 часа, которое тоже в админке настраивается). Система отправляет ссылку в Вайбер, Телеграмм, на почту и т.п. В админке отслеживается если оплатил то оплачено или если не оплатил и срок истек то просрочено. Это еще один плюс так как покупатель завершает оформление заказа (при обычной онлайн-оплате его перекидывает на страницу оплаты которую он может закрыть не оплатив и заказ на сайте не оформится (останется в незавершенном статусе). Если Вам такой принцип устраивает то заказывайте у разработчиков подобный функционал для своей системы оплаты (если она поддерживает холдирование).