【问题标题】:Require.js and SPDYRequire.js 和 SPDY
【发布时间】:2013-06-09 16:52:45
【问题描述】:

我知道对不同的脚本执行许多请求对性能不利,即我的脚本需要 30 个依赖项,因此 require.js 会为此发出 31 个请求。我可以使用 require 优化器并下载脚本包。

如果我使用 SPDY 并仍然发出这 31 个请求,那么多路复用请求的能力会帮助我,并且不会在性能方面产生差异吗?

谢谢

【问题讨论】:

  • 最后你做到了吗?
  • 不,这只是一个理论上的问题,因为在浏览器的主要部分支持 SPDY 功能之前,我不想做多个请求来获取资产
  • 我今天试过了。当计数大于 100 时,SPDY 中的文件似乎比 HTTP 中的文件稍快。对于 20 个文件,SPDY 看起来更慢。我在这里记下了一些笔记(但用中文),也许其中一些有帮助。 blog.segmentfault.com/jiyinyiyong/1190000000471129

标签: requirejs spdy


【解决方案1】:

当您使用 SPDY 时,多路复用请求的能力可能会提高您的性能。

原因是使用纯 HTTP,浏览器通常只能同时发出 6 个请求(假设所有 30 个脚本都将从同一个域下载)。 然后浏览器必须等待至少一次网络往返才能执行第 7 个请求。 根据您的客户端相对于您的服务器的位置,网络往返可能在 50 毫秒到 500 毫秒的范围内,有时甚至更长。

使用 SPDY,由于多路复用,所有 30 个请求可以一次发出。

此外,实现 SPDY Push 的 SPDY 服务器可能能够将 30 个辅助资源连同对主要资源(通常是 HTML 页面)的初始请求一起推送到客户端。

Jetty 实现了 SPDY Push,您可以观看 this demo 以了解当您请求与主要资源关联的 20 多个辅助资源时 SPDY Push 的不同之处。

您可以找到 Jetty SPDY 文档 hereblog post,其中显示了如何在 Jetty 中配置 SPDY Push。

【讨论】:

  • 所以如果我使用 SPDY,基本上可以发出 31 个请求来获取所有 js 文件?
  • 你能在这里举个例子吗?我在这里设置了一个 SPDY Nginx 文件服务器,但发现它仍然很慢。我可能猜到,由于文件是由 RequireJS 一个一个请求的,它可能不像普通的 HTML 页面一样,Chrome 将所有请求合二为一。这可能吗?
  • 浏览器在解析包含 30 张图片的 HTML 页面时,在找到第一张图片时不必停止解析。图像请求之间的延迟是由于解析,而不是网络。同样,RequireJS 可以并行请求 *.js 文件,而无需等待每个文件都下载完毕。在这些情况下,SPDY 通过多路复用有所帮助,尤其是在图像数量很大(例如,超过 10 个)的情况下。我使用 Jetty(我是它的开发人员之一),对 Nginx 帮助不大。
猜你喜欢
  • 2015-01-14
  • 2012-12-18
  • 2016-11-12
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多