3

我最近一直致力于改善我们网站的前端性能,并采用了许多最佳实践。

但是我有一个最近的例子,其中一些做法彼此略有不同

  • 最小化 HTTP 请求
  • 为了“欺骗”浏览器发出更多并发请求,从不同的域提供一些资产
  • 利用浏览器缓存

为什么?

我们过去常常将几乎所有的 Javascript 捆绑到一个文件中,以最大限度地减少 HTTP 请求。这包括 JQuery 和 JQuery UI。

我认为这很愚蠢,因为许多用户可能已经在他们的浏览器中缓存了 JQuery,所以我决定我们应该从 all.js 中删除它,而是从 Google 的 CDN 中提供它。这将节省用户再次下载代码的时间,并且因为它位于不同的域中,它可以与我们自己域中的其他资源并行下载。

并发下载如下图所示:

使用 Google'CDN 进行并发下载的效果

这当然增加了没有缓存 JQuery 的人的请求数量,但这并不是很好。

所以我的问题是:

这种改变是明智的吗?利用缓存和允许并发请求的好处是否超过请求数量的轻微增加?

4

1 回答 1

2

这是一个很好的问题

您已经很好地解释了您的推理,它们都是进行此更改的充分理由。

但这两种方法仍然有好处。

将所有内容合并到一个文件中

  • 减少 HTTP 请求的数量,减少往返延迟对用户连接的负面影响。

  • 所有库/插件都会立即下载,并应在以后需要时保持缓存。

  • 减少对其他服务的依赖(尽管 Google 会非常可靠)。

跨域分布的单独文件

  • 增加下载的并行化,减少带宽整形对用户连接的负面影响。(请注意,大多数浏览器不再将每个域的并发请求限制为 2 个。

  • 增加粒度 - 可以根据需要按需下载单独的部分,即如果在首页点击时不需要特定插件,则不会下载。

就个人而言,我通常会稍微倾向于前者(通过将 HTTP 请求合并到一个大文件中来减少它们)。我觉得我的大多数观众都将使用相当高的带宽连接,我可以减少延迟。请记住使用 Google 和 Yahoo 的页面速度工具来寻找其他加快速度的方法。

于 2012-08-31T07:08:09.147 回答