Есть B2B портал, с учетной системы напрямую в базу данных пишутся остатки товаров, иногда пользователи жалуются на то, что остатки не актуальны, пока не обновишь страницу.
Могут ли кэшироваться запросы Yii2 к базе данных, если да, то как отключить?
Может кэшироваться запрос к базе данных?
Re: Может кэшироваться запрос к базе данных?
При чем тут кэширование запроса к обновлению страницы?
Для того, чтобы узнать сколько осталось "остатков товаров" актуальное число, нужно обновить страницу. Чтобы запрос выполнился и показал актуальное состояние. При переходе с одной страницы на другую запрос по остаткам товаров, если это страница просмотра всего содержимого, где есть остатки товаров, будет обновляться сам.
Можно чуть больше конкретики по задаче?
Для того, чтобы узнать сколько осталось "остатков товаров" актуальное число, нужно обновить страницу. Чтобы запрос выполнился и показал актуальное состояние. При переходе с одной страницы на другую запрос по остаткам товаров, если это страница просмотра всего содержимого, где есть остатки товаров, будет обновляться сам.
Можно чуть больше конкретики по задаче?
Re: Может кэшироваться запрос к базе данных?
Подключите WebSocket-уведомления, чтобы на странице обновлялись без перезагрузки.
Re: Может кэшироваться запрос к базе данных?
Видимо не так описал то, что происходит. Остатки отображаються не правильные, не те что в базе данных:
- в 12:00 был остаток 10 шт
- в 13:00 продали 2 шт
- в 14:00 пользователь заходит на портал и видит 10 шт, нажал ctrl+F5 и остатки показались правильные - 8 шт.
- в 12:00 был остаток 10 шт
- в 13:00 продали 2 шт
- в 14:00 пользователь заходит на портал и видит 10 шт, нажал ctrl+F5 и остатки показались правильные - 8 шт.
Re: Может кэшироваться запрос к базе данных?
https://yiiframework.com.ua/ru/doc/guid ... components
При такой проблеме, вариант, что где-то используется кэширование запросов в коде
https://yiiframework.com.ua/ru/doc/guid ... ry-caching
При такой проблеме, вариант, что где-то используется кэширование запросов в коде
https://yiiframework.com.ua/ru/doc/guid ... ry-caching
Re: Может кэшироваться запрос к базе данных?
Нашел решение, было так:
Добавил noCache() :
Код: Выделить всё
$productStock = self::hasMany(ProductStock::className(), ['product_id' => 'id'])
->andWhere(['enabled' => 1])
->andFilterWhere(['store_id' => $store_map]);
Код: Выделить всё
$productStock = self::hasMany(ProductStock::className(), ['product_id' => 'id'])
->andWhere(['enabled' => 1])
->andFilterWhere(['store_id' => $store_map])->noCache();
Re: Может кэшироваться запрос к базе данных?
Это хорошо, но стоит проверить, возможно где-то есть в проекте кэширование запроса.
Вопрос просто в том, что зачем кэшировать, а потом указывать чтобы этот запрос не кэшировался?