Включите сжатие Gzip и установите время истечения срока действия кэша в CakePHP - PullRequest
6 голосов
/ 21 января 2010

Я использую CakePHP с Apache2. Анализируя мои страницы с помощью инструмента PageSpeed ​​от Google, я обнаружил две основные проблемы. Во-первых, я должен включить gzip-контент, а во-вторых, я должен использовать кэширование в браузере для изображений, javascript и css-файлов.

Я более или менее нашел, как это исправить, но это связано с изменением моего основного файла .htaccess. На самом деле это выглядит не так, как CakePHP, хотя бы потому, что этот .htaccess является частью дистрибутива CakePHP, и я должен помнить, чтобы сохранить его при смене версии. Есть ли лучший способ сделать это?

Во-первых, я могу исправить, поставив

php_value output_buffering On
php_value output_handler ob_gzhandler

я тоже пробовал

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript
</IfModule>

но я не увидел результатов с PageSpeed.

Для второго я сейчас использую

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType application/x-javascript A8640000
    ExpiresByType text/javascript A8640000
    ExpiresByType text/css A8640000
    ExpiresByType image/png A8640000
</IfModule>

и это отчасти работает, хотя я все еще получаю сообщение "Следующие кэшируемые ресурсы имеют короткий срок действия свежести. Укажите срок действия по крайней мере один месяц в будущем для следующих ресурсов: бла-бла"

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

Не существует «CakePHP Way», когда речь идет о сжатии GZIP и кэшировании в браузере. Это определенно больше проблемы конфигурации Apache. Вы должны иметь возможность безнаказанно изменять файлы .htaccess в папке /app.

При обновлении / обновлении CakePHP вам нужно только изменить файлы в папке /cake. Вам не нужно будет повторно включать какие-либо конфигурации сервера в файлах .htaccess папки /app, потому что все там останется прежним.

Всегда помните: что-либо в папке /app является честной игрой.

0 голосов
/ 02 июня 2017
## EXPIRES CACHING ##
<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 application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 30 days"
</IfModule>

Чтобы запустить модуль mod_expires в ubuntu, выполните следующие команды

sudo a2enmod headers
sudo a2enmod expires
sudo service apache2 restart
...