0

我使用 cakephp 已经有一段时间了,最​​近我做了一个更新,这使得网站在第一次加载时非常慢。我一直在使用不同的工具来找出导致这种情况的原因,但仍然没有任何线索。

我已经坚持了几个小时。有人可以帮我解决这个问题吗!

4

2 回答 2

4

恕我直言,无论蛋糕在做什么,它都与它无关,或者至少不是很重要,因为如果是这样的话,它只会发生在第一个用户身上,而不是所有人身上。我加载了您的网站,第一次加载时确实很慢,但之后加载就很好了。

我正在 chrome 上进行测试,我发现如果我删除 cookie(使用编辑此 cookie 扩展名)并尝试再次加载站点,请求很慢。

我使用 YSlow 扩展分析了您的网站并发现了这一点(文本来自分析结果)

  • 使用无 cookie 域的 F 级。有 22 个组件不是无 cookie 的。当浏览器请求静态图像并随请求发送 cookie 时,服务器会忽略 cookie。这些 cookie 是不必要的网络流量。要解决此问题,请通过创建子域并将其托管在其中,确保使用无 cookie 请求请求静态组件。
  • 减少 HTTP 请求的 F 级。此页面有 12 个外部 Javascript 脚本。尝试将它们合二为一。此页面有 11 个外部背景图像。尝试将它们与 CSS 精灵结合起来。减少页面上的组件数量会减少呈现页面所需的 HTTP 请求数量,从而加快页面加载速度。减少组件数量的一些方法包括:合并文件,将多个脚本合并为一个脚本,将多个 CSS 文件合并为一个样式表,以及使用 CSS Sprites 和图像映射。
  • 使用内容交付网络 (CDN) 的 F 级。有 42 个静态组件不在 CDN 上。用户接近 Web 服务器会影响响应时间。跨多个地理位置分散的服务器部署内容有助于用户感知页面加载速度更快。
  • 添加过期标题的 F 级。有 36 个静态组件没有遥远的到期日期。网页变得越来越复杂,其中包含更多的脚本、样式表、图像和 Flash。首次访问页面可能需要多个 HTTP 请求来加载所有组件。通过使用 Expires 标头,这些组件变得可缓存,从而避免了后续页面视图中不必要的 HTTP 请求。Expires 标头通常与图像相关联,但它们可以而且应该用于所有页面组件,包括脚本、样式表和 Flash。

如果您还使用 Google PageSpeed 扩展程序,您将获得有关您网站的更多有趣信息。

所以恕我直言,这个问题与浏览器相关的问题比服务器(CakePHP)的问题更相关。

希望这可以帮助

于 2013-04-08T17:46:31.113 回答
1

用萤火虫检查,虽然你有很多 js 和图像请求,正如@pollirrata 指出的那样,js 加载时间只占加载时间的 20%,图像另外 20%(大约)。很多,但正如您评论的那样,根 url 是加载时间超过一半的那个。

我知道这应该继续评论,但我还不能这样做:你做了什么样的更新?我猜它在主控制器的主要动作中。你在那里检索很多信息吗?Cake 第一次可能会缓存结果查询,这就是为什么第二次加载所需时间更少的原因。您是否对查询使用可包含的行为(我猜有查询......)?

你能做一个:

$this->autoRender = false;
pr($info);   //that is, dump every variable with info you have here

看看在没有额外重量的情况下加载需要多长时间才能排除这种情况?

于 2013-04-08T21:19:09.457 回答