Кэширование в Yii2
Кэширование переменных с использованием расширения APC
Для начала настраиваем компонент в конфигурационном файле нашего приложения Yii2 следующим образом:
return [ // ... 'components' => [ 'cache' => [ 'class' => 'yii\caching\ApcCache', ], ], ];
После этого вы можете использовать кэширование данных следующим образом:
$key = 'cacheKey' $data = Yii::$app->cache->get($key); if ($data === false) { // $data не найдена в кэше, вычисляем заново // сохраняем $data в кэш для того, чтобы можно было в дальнейшем из кэша получить без повторных вычислений $cache->set($key, $data); }
Иногда может возникнуть следующая ошибка: Call to undefined function yii\caching\apc_fetch()
, которая означает, что имеются проблемы с использованием расширения APC. В таком случае необходимо обратиться к руководству (http://php.net/manual/ru/book.apc.php) для решения данной проблемы.
Если же кэш не работает (при поиске переменной $data
в кэше всегда возвращает false
), тогда проверьте apc.shm_size
в конфигурационном файле PHP php.ini
. Вероятнее всего указано маленькое значение в этом параметре.
HTTP-кэширование для assets и других статичных ресурсов
Скорость загрузки страницы может быть медленной, если не указано время жизни в кэше файлов с такими расширениями, как .js
, .css
и др. Если использовать инструмент PageSpeed Insights
в Google Chrome
для проверки скорости загрузки страниц, то он будет рекомендовать использовать кэш браузера для увеличения скорости загрузки страниц. И в таком случае это легко настраивается добавлением следующего кода в конфигурационном файле приложения Yii2:
return [ // ... 'components' => [ 'assetManager' => [ 'appendTimestamp' => true, ], ], ];