我问我的主人他们是否支持mod_expires,他们告诉我它是支持的。我使用CakePHP,我在webroot/.htaccess
和`app_root / .htaccess中尝试了以下代码,但考虑到css,js,png,jpg等的缓存存在问题,Google的页面速度很快,它发现它们24小时! 如下面的屏幕截图
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=31449600, public"
</FilesMatch>
以上代码来自this article。
我还使用了以下内容:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 year"
ExpiresByType text/html "access 1 month"
# ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType text/javascript "access 1 year"
ExpiresByType application/javascript "access 1 year"
# ExpiresByType application/x-shockwave-flash "access 1 month"
# ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 year"
</IfModule>
此外,我尝试将两个代码互相使用,但Google Speed告诉我相同的内容。请看以下屏幕截图:
我需要知道如何解决这个问题?!!
修改##
在Firefox中使用firebug我注意到只有
app/views/themed/slate/webroot
中的资源不受缓存影响 上面提到的设置,但直接在app/webroot
中找到的设置, 即没有,主题受到影响。
答案 0 :(得分:1)
似乎是a bug in cakephp。在cakePHP 1.3+中,主题视图资产已从app/webroot/themed/themeTitle
移至app/views/themed/themeTitle/webroot
。
根据CakePHP 1.3 documentation,您可以通过创建app/webroot/theme/themeTitle
链接到静态资产与1.2略有不同。你还可以 使用现有的app / webroot / themed并直接链接到那些静态 文件。应该注意,您将需要使用完整路径 链接到app / webroot / themed中的资产。如果你想保持你的主题 app / webroot中的资产建议您重命名 app / webroot /主题为app / webroot / theme 。这将允许你 利用核心辅助路径查找。以及保持性能 不通过PHP提供资产的好处。
因此,我为解决此问题所做的工作是将app/views/themed/slate/webroot
中的所有文件复制到app/webroot/theme/slate
以下屏幕截图来自FireFox Firebug,它显示一个图像文件在一年后的几秒钟内过期: