什么更快? Hot linking (inline linking)到absolute URI或自己托管资源并使用 relative URI ?
在他的tutorial on how to style HTML5 elements in Internet Explorer , Remy Sharp 声明热链接会导致“额外的 HTTP [GET] 请求”。如果您将热链接与将脚本复制和粘贴(嵌入)到 HTML 中进行比较,我同意。但是,如果您将热链接与在本地托管脚本并通过相对路径进行链接进行比较,那么我认为热链接实际上(稍微)更快,因为浏览器不必解析绝对路径来自相对路径的 URL。然而,在这两种情况下,都会执行一个额外的 HTTP GET 请求,对吗?
最佳答案
正确答案是 - 视情况而定。
盗链可能会很慢,因为 -
- 需要额外的 DNS 查询
- 无法重用现有的 TCP/IP 套接字连接
在您的服务器上托管可能会很慢,因为 -
- 浏览器只允许每个主机有 n 个并发请求。向同一主机发出更多请求可能会导致排队,这可能会很慢。数字“n”是特定于浏览器的,介于 2 和 6 之间。See browserscope > network > connections per host name .
如果您假设两台服务器在各个方面都相同,我会说在您的服务器上托管会更快。在每个主机的连接数为 6 的新浏览器上尤其如此。
但遗憾的是,事情从来没有这么简单。我建议仅在以下情况下使用热链接 -
- 您域中的资源(图片/js)过多
- 另一台服务器是 CDN,该资源足够受欢迎,因此它很有可能会出现在浏览器的缓存中。想想谷歌服务器上的 JQuery。
对于所有其他用例,您最好托管在自己的服务器上。
关于性能:绝对 URL 与相对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158444/