Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时需要更多/更少的http请求?_Javascript_Php_Html_Css_Http - Fatal编程技术网

Javascript 何时需要更多/更少的http请求?

Javascript 何时需要更多/更少的http请求?,javascript,php,html,css,http,Javascript,Php,Html,Css,Http,如果页面加载速度很快,您可能需要一系列小的http请求 如果是一个大的页面,用户可能需要等待更长的时间才能看到页面是否存在 然而,我听说最小化HTTP请求更有效。例如,这就是为多个图像创建精灵的原因 对于何时需要更多和何时需要更少,是否有一个通用的指导原则?HTTP协议是冗长的,因此头大小与有效负载大小的比率使得拥有更大的有效负载更加有效。最重要的是,这仍然是一种分布式通信,这使得它天生就很慢。通常,您还必须为每个请求设置并断开TCP连接 此外,我还发现,小请求在它们之间重复数据,以达到REST

如果页面加载速度很快,您可能需要一系列小的http请求

如果是一个大的页面,用户可能需要等待更长的时间才能看到页面是否存在

然而,我听说最小化HTTP请求更有效。例如,这就是为多个图像创建精灵的原因


对于何时需要更多和何时需要更少,是否有一个通用的指导原则?

HTTP协议是冗长的,因此头大小与有效负载大小的比率使得拥有更大的有效负载更加有效。最重要的是,这仍然是一种分布式通信,这使得它天生就很慢。通常,您还必须为每个请求设置并断开TCP连接

此外,我还发现,小请求在它们之间重复数据,以达到RESTful的纯度(比如在每个响应中包含用户数据)


只有当数据可能根本不需要时,小请求才有用,因此您只能在需要时加载数据。但是,即使这样,也可能更高效。只需一次检索所有请求。

多个请求会从连接和头创建开销

它就像下载一个FTP站点的内容,一个站点有一个1GB的blob,另一个站点有1000000个文件,总计几MB。如果连接良好,1GB文件可以在几分钟内下载,但另一个文件肯定要花一整天的时间,因为具有讽刺意味的是,传输协商比传输本身花费更多的时间

HTTP比FTP有点效率,但原理是一样的。
重要的是初始页面加载,它需要足够小,以便向用户显示一些内容,然后在用户视图之外加载其他资产。一个页面上有上千个微小的图像,总是会从sprite中受益,因为协商不仅会导致连接紧张,而且可能会导致客户端计算机紧张。

您总是需要更少的请求

我们在其他文件中分离任何javascript/css代码的原因是我们希望浏览器缓存它们,以便我们网站上的其他页面加载速度更快。 如果我们有一个没有公共库的单页网站(如jQuery),最好在html中包含所有代码。

EDIT 2(25-08-2017) 这里有另一个更新;一段时间过去了,正在成为一件真实的事情。我建议阅读更多关于它的信息

取自第二个链接(编辑时):

预计HTTP/2.0将:

显著且可测量地改善终端用户在 大多数情况下,通过HTTP/1.1使用TCP。称呼“行首” HTTP中的“阻塞”问题

不需要多个服务器连接即可启用并行性, 从而改进了TCP的使用,特别是在拥塞方面 控制。

利用现有文档,保留HTTP/1.1的语义 (见上文),包括(但不限于)HTTP方法、状态 代码、URI以及适当的标题字段

明确定义HTTP/2.0如何与HTTP/1.x交互,特别是在 中介机构(2->1和1->2)

清楚地确定其应用程序的任何新扩展点和策略 适当使用

粗体的句子(我的重点)解释了HTTP2如何处理不同于HTTP1的请求。HTTP1将创建8个(每个浏览器不同)同时(或“并行”)连接以获取尽可能多的资源,而HTTP2将重用相同的连接。这减少了创建新连接所需的总时间和网络延迟,从而加快了资产交付。此外,您的Web服务器还可以更轻松地保持约8倍的连接打开时间。想象一下那里的收获:)

HTTP2在主流浏览器中也得到了广泛支持:)

编辑(30-11-2015) 我最近在“页面速度”这一主题上发现了一些问题。这篇文章非常透彻,读起来也很有趣,所以我一定要试一试


起初的 这个问题的答案太多了,但这是我的答案

如果你想建立一个网站,你将需要一些基本的东西在你的工具带像HTML,CSS,JS-甚至可能PHP/Rails/Django(或10000多个其他网络框架之一)和MySQL

前端部分基本上是每个请求都发送给客户机的所有部分。服务器端语言计算需要发送的内容,即您构建网站的方式

现在,当涉及到管理资产(图像、CSS、JS)时,您正潜入HTTP领域,因为您希望执行尽可能少的请求。这是因为有一个问题

然而,这个DNS惩罚当然不会支配你的整个网站。对于构建网站的程序员来说,这是关于请求量和可读性/可维护性之间的平衡

一些框架(如rails)允许您在服务器上部署应用程序之前,将所有JS和CSS文件组合成一个大型元数据(如JS和CSS文件)。这可确保(除非另有规定)例如,网站中使用的ALLJS和ALLCSS在每个文件的一个请求中发送

想象一下,有一个弹出脚本和一些通过AJAX获取文章的东西。这将是两个不同的脚本,在部署时不合并它们-每个页面加载(包括弹出窗口和文章脚本)将发送两个请求,每个文件分别发送一个请求

这是不正确的原因,因为浏览器在任何时候都可以缓存任何可以缓存的东西,因为最终浏览器和构建网站的人都想要相同的东西。为我们的用户提供最佳体验! 这意味着在第一次请求期间,您的网站将尽可能多地缓存客户机,以加快连续页面加载速度