2

我问我的主人他们是否支持 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>

上述代码取自本文

我还使用了以下内容:

<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,即没有,主题受到了很好的影响。

4

1 回答 1

1

这似乎是cakephp 中的一个错误。在 cakePHP 1.3+ 中,主题视图资源已从app/webroot/themed/themeTitle.app/views/themed/themeTitle/webroot

根据CakePHP 1.3 文档,您可以通过创建来恢复主题静态资​​产的旧位置(即在主 webroot 中)app/webroot/theme/themeTitle

链接到静态资产与 1.2 略有不同。您仍然可以使用现有的 app/webroot/themed 并直接链接到这些静态文件。应该注意的是,您需要使用完整路径链接到 app/webroot/themed 中的资产。如果您想将主题资源保留在 app/webroot 中,建议您将 app/webroot/themed 重命名为 app/webroot/theme。这将允许您利用核心助手路径查找。以及保持不通过 PHP 提供资产的性能优势。

所以,我为解决这个问题所做的就是将所有文件复制app/views/themed/slate/webrootapp/webroot/theme/slate

以下屏幕截图来自 FireFox Firebug,显示图像文件在一年后过期(以秒为单位):

在此处输入图像描述

于 2013-09-22T15:06:11.357 回答