什么更快? Hot linking (inline linking)到absolute URI或自己托管资源并使用relative URI?
在他的tutorial on how to style HTML5 elements in Internet Explorer中,Remy Sharp声称热链接会导致“额外的HTTP [GET]请求”。我同意你是否将热链接与copy& amp;将脚本粘贴(嵌入)到HTML中。但是,如果你比较热链接到本地托管脚本和通过相对路径链接,那么我认为热链接实际上(从未如此轻微)更快,因为浏览器不必解析绝对来自相对路径的URL。但是,在这两种情况下,都会执行额外的HTTP GET请求,对吗?
答案 0 :(得分:11)
正确的答案是 - 这取决于。
热链接可能很慢,因为 -
在您的服务器上托管可能会很慢,因为 -
如果你认为两台服务器在各个方面都是相同的,我会说服务器上的托管速度会更快。在每台主机的连接数为6的新浏览器中尤其如此。
但遗憾的是,事情从未如此简单。我建议仅在 -
时使用热链接对于所有其他用例,最好在自己的服务器上托管。
答案 1 :(得分:2)
这更像是与tcp这样的低级内容,而不是http本身。如果您现在从同一个Web服务器获得两个项目,您的浏览器可能会通过相同的tcp连接将它们拉出来。这是一个tcp连接上的两个http事务。这避免了进行另一个tcp连接的开销。这种开销在流量方面很小,但可能涉及很多延迟。
OTOH,做两个http事务,他们每个人去不同的服务器可能更快,或许不是。没错,你有两个tcp连接的开销。在这种情况下, 序列化 - 必须在第二个启动之前完成。但是,如果你拉下许多对象,那么第二,第三,第四......连接都可以并行进行,掩盖了延迟问题。在这种情况下,事情可能会更快,因为小对象可能不受ISP的带宽限制。水确实是泥泞的。
请密切关注延迟和带宽。取决于您的资源的数量和大小。
答案 2 :(得分:2)
客户端需要解析相对URI的时间绝对可以忽略不计。
因此,无论是使用绝对URI还是相对URI链接到文档的同一域中的资源,都没有任何区别。
唯一的区别是资源托管在不同的服务器上。然后,您将需要与该服务器的额外TCP连接,而对已经连接的服务器的其他HTTP请求可以使用该连接。
答案 3 :(得分:0)
我认为影响这种情况的唯一因素是相关服务器的相对速度(速度)以及您是否希望此代码在任何其他站点上运行(为了可维护性)。
答案 4 :(得分:0)
假设资源未嵌入HTML文档本身(即它已链接),并且资源位于具有相同主机名的同一服务器上,则通过绝对或相对URI检索资源的时间应该基本相同。将以任一方式提交额外的HTTP请求。如果你想拆分“几乎相同的”,我会倾向于相对路径是一个非常非常非常小的数量,因为需要解析的HTML数量较少,路径解析(正如你所提到的)可能是更快(由于字符串标记符不必处理地址的域部分/地址更短)。这里的差异只是为了好奇心而现实。我无法想象一个网站被优化到这个水平(虽然,它可能建立一个好的经验法则?相对路径允许你自由地改变网站的域/路径无需重写..)
中包含的所有URI要考虑的一件事是,如果资源不托管在同一台服务器上,并且引用HTML文档的服务器启用了KeepAlive,则必须初始化另一个TCP连接以连接到第二个服务器(以及用于解析其他服务器主机名的DNS查询,假设访问不是通过IP地址),与同一服务器上的多个引用资源(GET请求将在哪里)相比,导致额外开销在现有的TCP连接中发布。)
同样适用于未启用KeepAlive的服务器;将为每个请求的资源初始化TCP连接。