我注意到在网络上,一些网站有专门用于图像或子域信息的子域,例如 i.domain.com。我想知道这有什么好处?这种“方法”有名称吗?我在哪里可以获得更多关于这方面的信息?谢谢。
7 回答
并行化图像/脚本下载。
某些浏览器一次只能打开 2 个并发连接到给定域。如果您有 20 个图像/脚本要下载,则一次只能下载 2 个 x10。如果您使用不同的域(子域),您可以增加并发下载量。
例如,StackOverflow 将图像放在 i.stackoverflow.com 下以帮助提高速度。
编辑
正如理查德(在评论中)指出的那样,HTTP 规范强烈建议 2 个并发连接限制。
'一世。' 由于乍得解释的原因,经常用于图像。它还有一点点,在“i”下有图像。允许来自主域的更多请求而不会干扰图像。
特别是,每次包含外部 <script>(*) 时,浏览器都必须阻止在脚本下渲染页面的其余部分,直到获取并执行脚本文件。如果 script 元素上方有 20 张图像,则这些图像都已经排队,并且可能在 script 元素之前被提取,从而导致渲染页面有很大延迟。
对于像脚本这样的重要资源使用不同的主机名(即使在同一个域中),图像请求不会阻塞更重要的样式表和脚本资源的管道;相反,它们将并行发生。
当然,通过为图像和其他大型资源(如视频文件)使用不同的主机名,您将来可以将它们启动到第二台服务器上。
(*:除非你使用 <script defer>,但它很少使用并且不全球支持。)
除了拥有更多的同时浏览器连接外,静态内容(图像、CSS、Javascript)通常被委托给CDN,这需要一个新的子域。
m.cnn.com 适用于移动设备。节省打字。
您可以将无 cookie 的子域用于静态内容(图像、脚本、样式表等)。
静态内容不需要 cookie,因此发送/接收它们只是浪费带宽。
它还可以帮助管理对另一个子域上内容的访问,因为您可以放心地假设来自 i.yoursite.com 的所有内容只能通过 www.yoursite.com 链接
以 apache 为例,您可以放置一个带有一些简单规则的 .htaccess,以在子域的根目录中定义对图像的访问权限。
为某些资源使用单独的子域有几个原因:
并行下载 HTTP 规范将同时连接的数量限制为两个连接:
使用持久连接的客户端应该限制他们维护到给定服务器的同时连接的数量。单用户客户端不应与任何服务器或代理保持超过 2 个连接。
但是,尽管大多数浏览器支持每台服务器同时连接两个以上,但存在一个限制,并且分发请求将允许更多的同时连接。
静态内容 由于图像、样式表和脚本大多是静态内容,它们可以交换到专门提供静态内容的不同服务器。因此,用于处理服务器端语言的不必要的加载模块不会阻碍服务器传递内容。
无 Cookie 子域 Cookie 很有帮助,但可能会导致不必要的流量,因为它们是随每个有效请求一起发送的。因此,将 cookie 限制在
www.
子域中是一个很好的做法。
请参阅Yahoo! 的网站加速最佳实践,了解更多有用的加速技巧。