Polaris:通过依赖追踪优化网页加载时间

下一篇文章

Sunshine:能了解用户温度喜好的众包天气应用

网页臃肿的问题越来越严重。因此,旨在加速网页加载速度的技术通常专注于数据压缩也就不奇怪了。

但麻省理工学院计算机科学和人工智能实验室 (CSAIL) 的研究人员们另辟蹊径,试图将网页浏览中的一些冗余部分去除。他们推出了一款名为 Polaris 的工具,称可以减少 34% 的网页加载时间。

他们的技术专注于测绘网页中不同对象之间的连接(又称依赖),从而动态判断浏览器加载不同依存元素的最有效路径。

虽然以前也有人尝试过“依赖追踪”,但他们称自己的方法能更“精细”地描绘这些关系,其他方法则专注于通过 HTML 标签来比较词法关系,因此不能捕捉到“更细微的依赖”。

博士生拉维·内卓瓦利 (Ravi Netravali) 在谈到 Polaris 和其他方法的不同之处时说道:“之前的工具根据其依赖图所做的事是,尽量符合现在浏览器加载页面的方式。因此,载入页面时会先获取 HTML 文件。HTML 文件中列出了许多东西,且按照一定的顺序排列。这一顺序就是这些工具看待依赖的方式。因此,如果某个对象出现在另一个对象上方,它们就认为浏览器应该先获取出现在上面的对象。”

“我们发现,这么做并不一定对。这并不一定就是这些对象的真实依赖关系。因此,我们的 Polaris 就以更精细的程度去追踪这些对象的依赖关系。某个对象是不是在写入一些其他对象读取的数据?如果是,这就是依赖。但如果它们完全在做不相干的事,它们就没有任何共享状态,这样你就应该并发地获取并处理它们,因为它们之间并不依赖。”

那么为什么其他人没有想到过更精确地测绘网页对象依赖,从而提高浏览器的效率和页面加载速度呢?拉维·内卓瓦利认为,向移动计算的转变让人们更加关注页面加载逻辑,人们在之前主要关注其他地方来进行优化。

拉维·内卓瓦利说道:“直到几年前,许多人专注于改进浏览器、让 Javascript 引擎变得更快,让 HTML 处理器运行得更快。因此,像 Chrome 和火狐这样的现代浏览器都经过了大量优化。但我想,考虑到移动计算的崛起,现在的关注重点正转向这些延迟。这些移动网络中的往返时间让页面加载速度慢了非常多。”

“当人们主要通过桌面电脑浏览网页时,访问服务器的成本就低很多。而在移动网络中,这类时间就高了几个数量级,而我们的方法能节省一秒多。近年来有很多研究表明,从内容提供者的角度来说,页面加载时间每增加几十毫秒,都会流失大量收入和用户。”

Polaris 需要安装到服务器上,它还包括一个名为 Scout 的工具,以便在服务器本地加载页面,提取页面中的依赖来创造可供 Polaris 使用的依赖图,进而优化页面加载方式。

“当客户端请求到达服务器时,依赖图已经生成。生成依赖图不是由用户触发的”,拉维·内卓瓦利说道。不过,他也证实,如果网站发生重大改变,就需要重新进行依赖分析,以便继续加速网页。

“现在当网页更新时,无数索引会在服务器上更新,以确保这些索引有内容,它们还会索引之前的内容,以便总是能够恢复,因此我觉得这种依赖追踪也可以加入到这个工作流中。”

这些研究人员在众多网络环境中下测试了 Alexa 排名前 200 的网站。这些测试的中位数据是节省了 34% 的加载时间。拉维·内卓瓦利表示,加速取决于网页的复杂度。非常简单的页面不会从这一技术中得到多少好处,越复杂的页面能节省越多的加载时间。

麻省理工学院目前对 Polaris 的计划是“最终”开源,但其最近的希望是能鼓励浏览器开发商嵌入这一技术。

拉维·内卓瓦利表示:“我们做的一大决策是用 Javascript 来开发 Polaris。这是个研究项目,但我们希望它能被一些主流商业浏览器所采用。把 Polaris 嵌入到这些浏览器中会很有用。因为浏览器的原生源代码天然运行得比 Javascript 快。”

“在浏览器中处理 Javascript 有优点也有缺点。到目前为止,我们的想法是开源它,但我们的最终目标是让一些主流浏览器采用它。当然,网络服务器也可以采用它。”

MIT develops a new technique to load webpages faster