我正在尝试优化网页的加载时间。 目前,主要的http请求可以在一秒钟内完成,但是,图像的随机加载似乎是“级联”的:
http://picpaste.novarata.net/pics/320bd387b4988729ad2dbb10f69a7857.png
我正在使用nginx来服务我的静态文件,3名工人。 有没有可能连接被积压?
我会假设所有这些图像将被同时加载。 文件通过HTTPS提供,Keepalive设置为65秒。
编辑:火狐确实似乎尝试一次加载它们,但是,连接时间逐渐增加到2秒以上:
http://picpaste.novarata.net/pics/32c28414501d165df3e04b01e3ac3084.png
使用内容服务器来提供静态内容是很常见的。 这可以设置适当的caching标题,以便浏览器可以caching内容。 这减less了后续页面加载的渲染时间。 有些网站会设置很长的到期时间,并使用新的文件名更新内容。
虽然这对初始加载时间没有帮助,但应该增加后续加载时间。 它也减less了你的服务器的负载,这也将有助于这一目标。
尽pipe可靠地增加加载时间的操作相对较less,但可以提高渲染时间。 (浏览器限制打开的连接的数量是有很好的理由的)。包含graphics元素的大小数据允许页面在graphics下载之前进行渲染。 加载asynchronous渲染不需要的脚本组件也可以提供帮助。
这个行为取决于你的浏览器。 例如,如果您使用Chrome,则可能会发现“时序”图表显示的是相同的行为,但事情“暂时停滞”了一段时间; 这可能是由于[Chrome]每个来源的并发连接数限制为6。
你不会说你使用的浏览器和版本。
以下是来自https://developer.chrome.com/devtools/docs/network#resource-network-timing的摘录
阻止/阻止请求等待发送之前等待的时间。 这一次是包含代理谈判花费的时间。 此外,这段时间将包括浏览器何时等待已build立的连接可用于重用,并遵循Chrome每个原始规则的最多六个TCP连接。
这可以取决于KeepAlive设置。 如果设置 – 服务器将尝试使用尽可能less的连接(与浏览器一致)。 然而,在这样做的时候,沟通变得“同步”,所以有一个“我要求A,直到A在这里才会问B”。 此外,服务器应该发送的订单中的项目收到的请求,而不是在它能够处理这些请求的顺序。 这是HTTP / 1.1的限制
你所要求的是HTTP / 2行为,其中操作是asynchronous的,并且有真正的多路复用正在进行。