cad*_*alt 4 html javascript css php http
看起来你的页面加载速度很快,你会想要一系列小的http请求.
如果它是一个大的,用户可能需要等待更长时间才能看到该页面完全存在.
但是,我听说最小化HTTP请求更有效.例如,这就是为多个图像创建精灵的原因.
当你想要更多的时间以及何时需要更少时,是否有一般指导原则?
多个请求会从连接和标头创建开销.
它就像下载FTP站点的内容一样,一个站点有一个1GB blob,另一个站点有1,000,000个文件,总计几MB.在一个良好的连接上,1GB文件可以在几分钟内下载,但另一个肯定需要一整天,因为转移协商具有讽刺意味的是转移本身需要更多的时间.
HTTP比FTP更有效,但原理是相同的.重要的是初始页面加载,它需要足够小以向用户显示某些内容,然后在用户视图之外加载其他资源.具有一千个小图像的页面将从精灵中受益,因为协商不仅会对连接造成压力,而且还可能对客户端计算机造成压力.
这里还有另一个更新;一段时间过去了,HTTP2已经成为现实。我建议阅读此页面以获取有关它的更多信息。
取自第二个链接(在编辑时):
预计 HTTP/2.0 将:
在大多数情况下,通过使用 TCP 的 HTTP/1.1,可显着且可衡量地改善最终用户感知的延迟。解决 HTTP 中的“队头阻塞”问题。
不需要与服务器的多个连接来启用并行性,从而改善了 TCP 的使用,特别是在拥塞控制方面。
保留 HTTP/1.1 的语义,利用现有文档(见上文),包括(但不限于)HTTP 方法、状态代码、URI 以及适当的标头字段。
明确定义 HTTP/2.0 如何与 HTTP/1.x 交互,特别是在中介中(2->1 和 1->2)。
清楚地识别任何新的可扩展点和策略以供其适当使用。
粗体句子(强调我的)解释了 HTTP2 将如何与 HTTP1 不同地处理请求。HTTP1 将创建约 8 个(每个浏览器不同)同时(或“并行”)连接来获取尽可能多的资源,而 HTTP2 将重复使用相同的连接。这减少了创建新连接所需的总时间和网络延迟,从而加快了资产交付速度。此外,您的网络服务器还可以更轻松地保持打开的连接数减少约 8 倍。想象一下那里的收获:)
HTTP2 也已经在主要浏览器中得到了相当广泛的支持,caniuse 有一个表格。:)
我最近发现这篇关于“页面速度”主题的文章。这篇文章非常详尽,而且在最坏的情况下也是一本有趣的读物,所以我肯定会尝试一下。
这个问题有太多答案,但这是我的 2 美分。
如果您想构建一个网站,您的工具带中将需要一些基本的东西,例如 HTML、CSS、JS - 甚至可能是 PHP / Rails / Django(或 10000 多个其他 Web 框架之一)和 MySQL。
前端部分基本上是每个请求发送到客户端的所有部分。服务器端语言计算需要发送的内容,这就是您构建网站的方式。
现在,当涉及到管理资产(图像、CSS、JS)时,您将深入 HTTP 领域,因为您希望执行尽可能少的请求。其原因是存在DNS 惩罚。
当然,这种 DNS 惩罚并不影响您的整个网站。对于构建网站的程序员来说,这完全取决于请求量和读取/可维护性之间的平衡。
某些框架(例如 Rails)允许您在将应用程序部署到服务器上之前将所有 JS 和 CSS 文件组合成一个大的类似元的JS 和 CSS 文件。这可以确保(除非另有说明)例如网站中使用的所有JS和所有CSS都会在每个文件的一个请求中发送。
想象一下有一个弹出脚本和通过 AJAX 获取文章的东西。这将是两个不同的脚本,并且在不组合它们的情况下进行部署时 - 每个页面加载(包括弹出窗口和文章脚本)将发送两个请求,分别针对每个文件一个。
事实并非如此,因为浏览器会尽可能缓存所有内容,因为最终浏览器和构建网站的人想要同样的东西。为我们的用户提供最好的体验!这意味着,在第一个请求期间,您的网站将尽可能多地缓存客户端,以使未来的连续页面加载速度更快。
这有点像浏览器帮助网站变得更快的方式。现在,当杰出的浏览器专家想到某些东西时,我们的工作或多或少就是确保它适用于浏览器。通常这些带有缓存等的事情都是微不足道的,而且并不难实现(感谢上帝)。
页面加载中存在大量 HTTP 请求并不是世界末日的事情,因为它只会减慢您的第一个请求,但总体来说,请求较少会使这种“DNS 惩罚”的情况出现得更少,并且会导致您的用户更多的是即时页面加载。
除了文件合并之外,还有其他技术可以发挥您的优势,当包含 JavaScript 时,您可以选择异步或延迟。
对于异步,这意味着无论何时加载脚本,脚本都会在后台加载并执行,无论其在 HTML 中的包含顺序如何。这也会暂停 HTML 解析器以直接执行脚本。
对于延迟来说有点不同。这有点像异步,但文件将以正确的顺序执行,并且仅在之后执行在HTML 解析器完成
例如,您不希望成为“异步”的东西是jQuery,它是许多网站的关键库,您会希望在其他脚本中使用它,因此使用异步并且不确定何时下载和执行它是这不是一个好计划。
例如,您希望“异步”的东西是谷歌分析脚本,它对于最终用户来说实际上是可选的,因此应该被标记为不重要 - 无论您多么关心您的网站不是为之构建的统计数据你但是你:)
回到请求并将所有关于异步和延迟的讨论混合在一起,例如,您可以在页面上有多个 JS,并且不让 HTML 解析器暂停来执行某些 JS - 相反,您可以使该脚本延迟,然后您将很好,因为用户的 HTML 和 CSS 将加载,而 JS 解析器会很好地等待 HTML 解析器。
这不是一个减少 HTTP 请求的示例,而是一个替代解决方案的示例,如果您有这个“一个文件”,除了单独的请求之外,它实际上不属于任何地方。
你也永远无法建立一个完美的网站,http://github.com或http://stackoverflow.com也不会,但没关系,它们的速度足够快,我们的眼睛看不到任何疯狂闪烁的内容以及那些最终用户来说确实很重要。
如果您想知道有多少请求是正常的,那就不要好奇。每个网站和网站的目的都是不同的,虽然我同意有些事情有时确实会超出范围,但事实就是如此,我们所要做的就是支持浏览器,就像它们支持我们一样 - 即使看看 IE / Edge因为他们也在进步(缓慢但稳定)。
我希望我的故事对你有意义,我在发帖之前确实重新阅读过,但在寻找不规则打字或其他不合逻辑的事情时找不到任何东西。
祝你好运!
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |