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

And*_*rea 7 caching gzip cakephp apache2

我正在使用CakePHP和Apache2.使用Google的PageSpeed工具分析我的网页,我发现了两个主要问题.第一个是我应该启用gzipping内容,第二个我应该利用浏览器缓存图像,javascript和css文件.

我或多或少找到了如何解决这个问题,但它涉及更改我的主.htaccess文件.这看起来并不像CakePHP,如果没有,因为.htaccess是CakePHP发行版的一部分,我必须记住在更改版本时保留它.有一个更好的方法吗?

首先,我可以通过推杆补救

php_value output_buffering On
php_value output_handler ob_gzhandler
Run Code Online (Sandbox Code Playgroud)

我也试过了

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/x-javascript
</IfModule>
Run Code Online (Sandbox Code Playgroud)

但我没有看到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>
Run Code Online (Sandbox Code Playgroud)

它有点工作,虽然我仍然收到消息"以下可缓存资源的生命周期很短.为以下资源指定未来至少一个月的到期时间:blah blah"

Ste*_*hen 3

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

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

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

  • Cakephp::response-&gt;compress();怎么样??? 即添加 public function beforeRender(){ $this-&gt;response-&gt;compress(); } (2认同)