Gzip является самым популярным и эффективным методом сжатия в настоящее время. Этот метод позволяет в целом уменьшить размер ответа примерно на 70%. Страница сжимается на сервере и отправляется сжатой браузеру, который ее распаковывает.
Вставить в файл .htaccess:
# GZIP сжатие <ifModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/xml </ifModule>Приведенные в коде ресурсы (js,css и др.) перед отправкой в браузер клиента теперь будут сжиматься.
Для фрейморка yii2 вставлять приведенный код стоит в файл .htaccess находящийся в папке frontend\web.
Проверить насколько эффективно сжатие можно тут. Запустите сначала без сжатия, а потом с сжатием и сравните. Единственное - при большой посещаемости сайта и "слабом" хостинге, нужно следить чтобы нагрузка на хостинг не превысила допустимую.
HTTP кэширование - кэширование на стороне браузера.
1. Заголовок
Cache-control
с директивой max-age
.С помощью веб-сервера Apache устанавливаем период в секундах, на протяжении которого указанные ресурсы браузеру следует брать из своего кэша, а не скачивать с сервера.
Вставить в файл .htaccess:
# HTTP кэширование у клиента <ifModule mod_headers.c> #кэшировать css, javascript и текстовые файлы на одну неделю <FilesMatch "\.(js|css|txt|ttf)$"> Header set Cache-Control "max-age=604800" </FilesMatch> #кэшировать флэш и изображения на месяц <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> </IfModule>
2. Заголовок
Expired<br>
Данный способ похож на предыдущий - с помощью веб-сервера Apache устанавливаем "срок годности" ресурсов, на протяжении которого изменение файлов не планируется.<IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/x-javascript "access plus 1 month" ExpiresByType image/x-icon "access plus 1 year" ExpiresDefault "access plus 2 days" </IfModule>
Проверить используется ли кэш браузера можно на этом сервисе, где должна появиться птичка на соответствующем пункте после сканирования страницы сайта. Там так же можно проверить и Gzip-сжатие.
И конечно проверить какие заголовки отсылает сервер браузеру, посмотреть скорость загрузки отдельного файла и страницы в целом можно с помощью стандартного отладчика браузера. Для его открытия, например, в Google Chrome нужно нажать правую кнопку мыши - "проверить" или сочетание клавиш Ctrl+Shift+I.

Примеры серверного кэширования для php-фреймворка Yii2 находятся по этой ссылке.
Как всегда полезная статья!