Yii2. Отключаем кэширование для браузеров

Итак, что такое браузерное кэширование?

При работе с фреймворком Yii2, наверняка многие заметили, как вся статика (CSS-стили, картинки, JS) загоняются в кэш при публикации сайта на хостинг (или, говоря профессиональным жаргоном, «В продакшене»). Знакомо? Это как раз тот самый случай, когда мы «выкатываем» новую правку в фронтенд-части нашей разработки, будь то новый стиль или картинка, а на проде её не наблюдаем. И это именно тот самый случай, где чтобы увидеть изменения нужно сбрасывать кэш браузера, заходить в режиме «инкогнито» или открывать в другом браузере.

Почему так происходит?

А происходит это по очень продуманной причине кэширования статики нашего приложения в Production режиме для того, чтобы сайт грузился быстрее и меньше напрягал сервер. Другими словами, Yii2 считает что сайт уже готов (Production-режим как-никак), статика меняться больше не будет и её можно запросто загнать в кэш браузера, тем самым снизив нагрузку на сервер и ускорив загрузку сайта.

Идея — супер! И я всеми руками поддерживаю, потому что сайты на Yii2 реально работают быстро!

браузерное кэширование в Yii2

Но что делать, если мы не совсем завершили работы над проектом и используем хостинг, как площадку для тестирования (так называемый Stage)? То есть правки сайта продолжаются и мы периодически «выкатываем» их на сервер, чтобы заказчик (да и мы сами) могли протестировать работу. В этом случае кэширование станет для нас не самой удобной опцией, так как нам придётся постоянно очищать браузер перед тем, как мы увидим новые наработки.

Как отключить браузерное кэширование?

Начиная с Yii2 версии 2.0.3 это становится возможным, благодаря опции $appendTimestamp модуля AssetManager. По умолчанию она выставлена в false, за счёт чего у нас и происходит кэширование.

Чтобы не лить много воды про описание этой опции (прочитать подробнее вы сможете самостоятельно в официальной документации. Моё дело — указать на причину. Приведу сразу живой рецепт:

Всё! Браузерный кэш отключен. Осталость только почистить папку /frontend/web/assets (удаляем все вложенные папки, кроме файла .gitignore) от текущего кэша и проблема решена!P.S. И не забудьте включить кэш, когда закончите экспериментировать над сайтом. Несложно догадаться, что для этого достаточно выставить значение appendTimestamp в false или просто удалить вышеуказанный блок из конфигурационного файла.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *