Twitter预连接到错误的域名

Twitter试图减少外部链接的加载时间,但它反而使加载速度变慢了。它错误地将域名规格化到不能再使用它们来完成其任务的程度。

我之前写过什么时候使用< link rel = " preconnect " >。这篇文章也作为一个介绍,如果你不熟悉的话题。

Twitter通过它重定向链接t.co网址缩写服务。它曾经是谷歌服务的一个有用的补充,因为它帮助人们保持在严格的字符限制之下。链接缩短器将所有链接减少到23个字符。Twitter通过点击流数据和流行链接的形式获得了更多关于用户的数据洞察。yabo88软件下载

但是,链接缩短服务了另一个代价:链接解决慢。而不是点击,通过直接向目标网站时,浏览器需要连接到Twitter的链接缩短服务,然后按照重定向到目标网站。yabo亚博体育下载在每次滚动的链接卡眼帘的时间过程中,微博preconnects加快其链接缩短服务。链接卡盒,显示的图像,标题和链接的描述。这表明,Twitter的发现它很可能人会点击在鸣叫外部链接。

为了进一步加快速度,Twitter还在重定向的另一端预连接到目的地网站。不过,它在这方面也犯了一些错误。

你可能会想,既然它已经知道了目标地址,为什么还要再使用缩短链接服务呢?再读一遍前一段,澄清一下Twitter的动机。

在我继续讨论这些问题之前,我必须先谈谈隐私问题。preconnect不传输任何HTTP报头、cookie或其他标识数据。目标网站不知道为什么客户端打开了一个连接在这一点。它刚刚打开了一个连接,正在等待一个请求进入。它的服务器可以识别用于建立连接的TLS库和版本,但这绝不是唯一的数据。能够观察相关网络流量的第三方将知道用户试图连接到或看到了到有问题的域名或服务器的链接。

也就是说,Twitter经常会预先连接到错误的网站。作为一个例子,让我们看看推文@CtrlBlog和@nytimes。由这些帐户共享的链接链接到这些域www.tianyase1.comwww.nytimes.com。Twitter没有预先连接到这里,而是预先连接到ctrl.blognytimes.com。当然,这些连接连接到错误的服务器,因此它们永远不会被使用。

奇怪的是,通过Twitter广告发布的推文(无论你是否把这条推文看成是广告)没有这个问题。这些推特没用t.co并且始终预连接到正确的服务器(此外还要预连接到错误的服务器)。

preconnect使用的不正确域名似乎源于Twitter API的显示URL属性。它去掉了www。前缀,使URL的“显示版本”。我有这个没有问题,作为前缀是毫无意义的人类。然而,这确实起到了重要的技术功能。Twitter的不从实际重定向URL中移除。

让我们更详细地看看当用户点击链接以及当浏览器使用预连接时会发生什么。

首先,浏览器现在需要解析包含的域名www。前缀。其次,浏览器需要建立一个TCP连接和一个TLS连接。如果Twitter一开始就只连接到正确的域,那么所有这些步骤都已经完成了。

很难说这个问题是什么时候开始的。我不能看旧版本的Twitter,因为它的页面在互联网档案馆的Wayback机器上不太好用。想想看,Twitter是否应该在一开始就预先连接到所有这些网站?

在我的文章关于何时使用< link rel = " preconnect " >,我将讨论使用预连接技术是有益的情况。我同意Twitter的观点,在某些情况下预先连接到目的地址可能是有用的。例如,当Twitter消息或链接卡是页面上唯一的东西,或者你已经停止滚动,有一两秒的时间可以看到它。

然而,Twitter的胡乱preconnects到每一个环节,你你的饲料中滚动。从技术上讲,它只是preconnects当你将鼠标悬停在链接。但是,您将鼠标悬停在默认情况下,每一个环节都为你把你的鼠标光标放在主要饲料和滚动向下。根据你所遵循的链接分享的习惯,preconnects的这一数字迅速增加。yabo亚博体育下载这可以减缓速度较慢的网络条件或在低端设备上的浏览体验。

正确地测试预连接行为需要专业的工具和技能。web浏览器中的开发工具不能很好地实现预连接。它们甚至没有记录在网络选项卡中。Safari为每个preconnect显示一条消息,并在其控制台选项卡中警告未使用的preconnect。

嘿@Twitter,修好你的东西!