内容提要
本文讨论了浏览器加载网页前的事件和如何优化以提高加载速度。介绍了性能API和导航计时API的使用,以及加快DNS查找、浏览器缓存检索和连接以及TLS协商的方法。最后提到了减少请求瀑布、利用缓存和使用HTML流式传输来提高页面加载速度。
延伸解读
浏览器缓存检索:开发者能优化吗?
文章指出,缓存跨度表示浏览器从缓存中检索资源的时间。较长的缓存跨度可能意味着用户使用较慢或较旧的浏览器,或者用户不经常清理浏览器缓存。作为开发者,你无法直接加速用户的缓存检索事件,但可以通过勤清理自己的浏览器缓存来优化自身体验。文章建议像提交git更改一样,经常清理浏览器缓存。
DNS查找优化:TTL设置的权衡
文章提到,DNS查找时间受DNS提供商基础设施、POP位置和TTL值影响。作者将自己的个人网站TTL从5分钟改为60分钟,在5天实验中观察到DNS查找跨度非零次数减少。但需注意,如果主服务器宕机需要切换到备份服务器,全球用户最多需要60分钟才能看到DNS变更。因此,对于非关键网站,提高TTL可能有益,但需权衡故障转移速度。
TLS协商:现代硬件已非瓶颈
文章引用Ilya Grigorik在2013年的观点,指出TLS协商不再需要专用硬件,现代CPU可以直接处理。建议充分利用TLS会话恢复,它允许在多个连接间恢复或共享相同的协商密钥数据,从而加快重连速度并减少计算开销。除非你直接负责服务器TLS实现,否则TLS协商优化通常已由基础设施处理。
减少请求瀑布:作者亲身实践
文章强调,开发者最能控制的是TTFB(首字节时间)。作者分享个人网站经历:页面加载变慢后,通过Sentry发现每次加载都向边缘服务器发起多次往返请求。通过移除这些即时请求并将所需数据包含在静态页面构建中,作者将TTFB大幅降低了约80%。建议检查数据库查询能否并行或合并,甚至考虑静态构建。
Q&A
如何优化网页加载速度?
可以通过加快DNS查找、利用浏览器缓存、减少请求瀑布和使用HTML流式传输来优化网页加载速度。
什么是TTFB?
TTFB(首字节时间)是指从请求网页到接收第一个字节之间的时间。
如何加速DNS查找?
可以通过使用rel='dns-prefetch'属性和设置较高的TTL值来加速DNS查找。
TLS协商时间如何优化?
可以通过使用TLS会话恢复来优化TLS协商时间,从而减少连接延迟。
什么是HTML流式传输?
HTML流式传输是指服务器逐步发送HTML文档,使浏览器可以更早开始解析和渲染内容,从而减少TTFB。
如何减少请求瀑布?
可以通过并行处理数据库查询和减少依赖于其他请求的资源加载来减少请求瀑布。