Задать вопрос

Почему не работает кэширование запросов?

Подскажите, пожалуйста, почему не работает кэширование, что то кроме указания компонента в web.php требуется?
$productsForFilter = Product::getDb()->cache(function ($db) use ($productQuery) {
            return $productQuery->select('product.id')->asArray()->all();
        });

Я так понимаю, что если данные достаются из кэша, то памяти используется значительно меньше, чем при первом незакэшенном запросе?
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
1.
// Кэширование запросов для DAO
// Возвращает ассоциативный массив с именами столбцов и значений
$categories = Yii::$app->db->cache(function () {
  return Yii::$app->db->createCommand('SELECT * FROM `category`')->queryAll();
});
 
 
// Кэширование запросов для ActiveRecord (на 1 час)
// Возвращает объект
$categories = Category::getDb()->cache(function (){
    return Category::find()->all();
}, 3600);


2. Кэширование производится при необходимости, а не ради кэширования. У вас проблемы с нагрузкой? Зачем кэшировать?)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы