亚马逊和其他公司发现,网站消除100毫秒的延迟可使销售额提高1%。
无论是不是电子商务网站,网站响应速度已经成为每个网站争抢流量、留住用户甚至是搜索引擎最佳化的关键。要提高网站速度的方法非常多,重新检查原始码是第一要务,将过度影响速度的部分移除,其他像是通过内容传递网络(CDN)进行全站加速也是个很好的作法。关于网站速度检查可参考16个免费在线网站测速工具,有些很好用的工具能帮助开发者发现网站过慢等问题。
本文这次要介绍的是一个网站预加载的脚本instant.page,作用是可以预加载用户即将访问的页面,当用户真正点击此链接后,能够从缓存中读取,因而提高网站的访问速度。
作用原理:
instant.page使用prefetch技术(预加载),它会在用户点击页面之前预加载页面。缩小使用者将鼠标移动到链接上、点选链接再到整个网页内容载入中间的几毫秒延迟时间。
这是一种欺骗大脑的概念,因为人类的时间感知力不到100毫秒,即使在3G移动网路也能感受到即时性。instant.page原始码只有125行,开放原始码,程式部分使用Cloudflare Workers托管,这也意味着使用serverless方式确保程式码不会遭到入侵或窜改,亦能拥有最好的延展性。
在PC设备上
在用户单击链接之前,他们会将鼠标悬停在该链接上。当用户悬停 65 毫秒时,他们有两次机会点击该链接,因此 instant.page 此时开始预加载,平均留出超过 300 毫秒的时间供页面预加载。
另一种选择是在用户开始按下鼠标时加载页面而不预加载。这使得未使用的请求为零,同时仍将页面加载平均提高了 80 毫秒。
您还可以在悬停时或链接可见时预加载,并在用户开始按下鼠标时触发点击,使您的页面成为世界上最快的页面。
在移动设备上
用户在释放显示器之前开始触摸屏幕,平均留出 90 毫秒的时间让页面预加载。
另一种选择是在链接可见时立即预加载链接。
使用方法:
打开 instant.page 官方网站,首页就有非常完整的说明:将HTML代码段放在</body>之前,代码如下:
<script src="//instant.page/5.2.0" type="module" integrity="sha384-jnZyxPjiipYXnSU0ygqeac2q7CVYMbh84q0uHVRRxEtvFPiQYbXWUorga2aqZJ0z"></script>
或者你可以通过自托管的方式,下载最新版本,然后在</body>之前添加一个 module script 标签:
<script src="instantpage-5.2.0.js" type="module" defer></script>
你也可以通过 npm 安装它:npm i instant.page
温馨提示:
- instant.page是渐进式增强模组,对不支持这项技术的浏览器不会有任何影响。
- 预设情况下instant.page不会预先载入链结中带有查询符号(问号)的页面,因为它们有时候会触发一些操作(例如登入或删除某些东西),不过如果你要让整个页面都有效果,也可以加入参数至中,或是针对不同的链结个别设定。
- 使用付费CDN并开了全站CDN的网站,谨慎使用。不过不用担心的是,预加载只是加载html页面,图片等文件不会加载,所以不会有太多的流量消耗。
- WordPress用户可以直接搜索安装:instant.page 插件,点击启用便可实现上述效果。