识别并剔除冗余 JavaScript 代码以加快网页加载的系统
网络与互联网体系结构
2020-03-18 v1
摘要
许多网站引入大型 JavaScript (JS) 库以定制和增强用户体验。我们的数据显示,许多 JS 库在页面加载期间仅被部分使用,因此包含永不会执行的冗余代码。许多排名靠前的网站含有多达数百千字节的压缩后冗余代码,且中位页面上的 JS 资源含有 31% 的冗余代码。冗余 JS 代码膨胀了页面体积,进而增加了下载、解析和编译 JS 资源的时间。因此,监测 JS 资源的使用并优化其负载以提升 Web 性能十分重要。然而,鉴于网页设计与功能可能依赖于用户偏好或设备等诸多其他因素,在受控环境中主动加载网页无法覆盖网页内容与功能发生变化的所有可能条件。在本文中,我们展示可利用被动测量技术,如真实用户监控系(RUM),在不同条件下监测真实用户页面加载的性能,从而识别冗余代码。利用自定义中间人代理(类似于内容分发网络的代理服务器),我们为网站开发者设计了一种系统性方法,该方法依赖真实用户加载的页面被动识别 JS 资源上的冗余代码。随后,我们在后续页面加载请求前从 JS 资源中剔除任何冗余代码。我们的数据显示,剔除冗余 JS 代码使中位页面加载时间改善 5%,并使长尾页面的加载时间至少改善 10%。通过本文呈现的结果,我们论证了在不同真实世界条件下严格监测 JS 资源使用情况的必要性,以期改善 Web 性能。
引用
@article{arxiv.2003.07396,
title = {System to Identify and Elide Superfluous JavaScript Code for Faster Webpage Loads},
author = {Utkarsh Goel and Moritz Steiner},
journal= {arXiv preprint arXiv:2003.07396},
year = {2020}
}