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

时间:2010-01-20 21:01:59

标签: cakephp caching apache2 gzip

我在Apache2上使用CakePHP。使用Google的PageSpeed工具分析我的网页,我发现了两个主要问题。第一个是我应该启用gzipping内容,第二个是我应该利用浏览器缓存图像,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>

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

2 个答案:

答案 0 :(得分:3)

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

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

永远记住:/app文件夹中的任何内容都是合理的游戏。

答案 1 :(得分:0)

Popula()

在ubuntu中启动mod_expires模块运行以下命令

## 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>