在CakePHP中启用Gzip压缩并设置缓存过期时间

在CakePHP中启用Gzip压缩并设置缓存过期时间,cakephp,caching,apache2,gzip,Cakephp,Caching,Apache2,Gzip,我将CakePHP与Apache2一起使用。用谷歌的PageSpeed工具分析我的页面,我发现两个主要问题。第一个是我应该启用内容的gzip,第二个是我应该利用浏览器缓存来处理图像、javascript和css文件 我或多或少地找到了解决方法,但这涉及到更改我的主.htaccess文件。这看起来不是真正的CakePHP方式,如果没有的话,因为.htaccess是CakePHP发行版的一部分,我必须记住在更改版本时保留它。有更好的方法吗 首先,我可以通过 php_value output_buff

我将CakePHP与Apache2一起使用。用谷歌的PageSpeed工具分析我的页面,我发现两个主要问题。第一个是我应该启用内容的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>

AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript应用程序/x-javascript
但是我没有看到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>

过期于
ExpiresByType应用程序/x-javascript A8640000
ExpiresByType文本/javascript A8640000
ExpiresByType文本/css A8640000
ExpiresByType图像/png A8640000
虽然我仍然得到这样一条信息:“以下可缓存资源的新鲜度生命周期很短。请为以下资源指定至少一个月的过期时间:等等”

在GZIP压缩和浏览器缓存方面没有“CakePHP方式”。这绝对是一个Apache配置问题。您应该能够修改
/app
文件夹中的
.htaccess
文件而不受惩罚

更新/升级CakePHP时,只需更改
/cake
文件夹中的文件。您不必在
/app
文件夹的
.htaccess
文件中重新启用任何服务器配置,因为那里的一切都将保持不变


始终记住:
/app
文件夹中的任何内容都是公平的。

关于Cakephp::response->compress()??i、 e添加公共函数beforeRender(){$this->response->compress();}在AppController公共函数beforeRender(){$this->response->compress();}中使用此代码
## 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>
sudo a2enmod headers
sudo a2enmod expires
sudo service apache2 restart