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

Кеширует ли yii2 запросы к БД по умолчанию?

В документации сказано, что по умолчанию флаг enableQueryCache выставлен в true;
И это на самом деле так, в классе Connection ему прописан true;
Значит ли это, что теперь все запросы сформированные с помощью ActiveRecord закешированы?
Или этого флага не достаточно и там нужно в запросы вставлять специальные команды?
Т.е. если допустим сделать так

$user = Profile::find()->where(["id" => $id])->asArray()->one();


будет ли такой запрос закеширован?
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Запросы кэшируются, если вы явно вызываете метод ->cache() в запросе.
$user = Profile::find()->where(["id" => $id])->cache(1000)->asArray()->one();
В других случаях запросы не кэшируются. Иногда, в настройках, устанавливают кэширование схемы:
...
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=****',
            'username' => '****', 
            'password' => '****',
            'charset' => 'utf8',
            'enableSchemaCache' => false, //  Если не нужно кэшировать вместо `true` поставить `false`
            'schemaCacheDuration' => 3600,
            'schemaCache' => 'cache',
        ],
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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