首页 > 解决方案 > 为什么我们不让 HTTP 请求更高效呢?

问题描述

每当页面加载时,它的所有内容(如图像、脚本、样式)都是通过不同的 HTTP 请求请求的,这就是我所学到的。

但为什么会这样?当图像在同一服务器上时,很明显,浏览器会请求其他内容。那么,服务器不能发送与页面本身内联的图像吗?

有时,某些浏览器使用 NO IMAGE 模式,但这可以包含在请求本身中。

如果实施,这不能减少数据流量吗?

标签: http

解决方案


因为 HTTP 被设计为一种检索文档(即文本页面)的方式。直到后来,这才丰富了图像、脚本和其他外部资源。

并非每个对文档的请求都需要所有相关资源,例如(纯文本)爬虫或已经缓存了所有相关资源的浏览器 - 他们只想检索文档本身。

至于内联外部资源,是的,可以使用<script><style>元素来完成,并使用内联图像数据,请参阅如何在 HTML 中显示 Base64 图像?.

使用 HTTP/2 兼容的浏览器/服务器对也可以利用服务器推送,完全符合您期望旧 HTTP 版本支持的功能。看到HTTP 2 将支持服务器推送,这是什么意思?.

此外,随着技术的发展,可以将事物添加到协议中 - 如果该协议对向后兼容的更改开放。这个不能轻易被入侵到 HTTP/1.1 中,以保持旧浏览器和服务器正常工作。


推荐阅读