首屏和白屏时间
概念
首屏时间
指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全部渲染完成,但需要展示当前视窗需要的内容。
白屏时间
白屏时间是指浏览器开始显示内容的时间。因此,我们通常认为解析完 <head> 的时刻或开始渲染 <body> 标签就是页面白屏结束的时间。
如何计算
首屏时间
1 | window.onload = () => { |
DomContentLoaded在DOM树加载完之后立刻触发,DOM树加载完成之后,继续加载图片等外部文件,加载完成之后,onload事件触发。所以这两个都不适合用于计算首屏时间。
MutationObserver
TODO
白屏时间
使用performance,可以获取到当前页面中与性能相关的信息。
在 head 标签末尾添加 script 标签如下:
1 | <head> |
首屏优化
路由懒加载
把不同路由对应的组件分割成不同的代码块,待路由被请求的时候会单独打包路由,使得入口文件变小,加载速度大大增加。
1 | routes:[ |
缓存
采用HTTP缓存,设置Cache-Control,Last-Modified,Etag等响应头;
前端合理使用LocalStorage
服务端渲染
使用SSR,也就是服务端渲染, 组件或页面通过服务器生成html字符串,再发送到浏览器。
图片懒加载
按需加载代码
比如按需引入UI组件库:
1 | import { Button, Input, Pagination, Table, TableColumn, MessageBox } from 'element-ui'; |
HTTP2
使用 HTTP2 ,相比于 HTTP1,解析速度更快;支持多路复用,多个请求可以共用一个 TCP 连接;提供了首部压缩功能;支持服务器推送,服务器可以在发送 HTML 页面时,主动推送其他资源,而不用等到浏览器解析到相应位置发请求再响应。
减少 HTTP 请求数量,减少 HTTP 请求大小。(雪碧图)
CDN
开启GZip压缩
优化CSS代码
减少回流、重绘;降低CSS选择器复杂度
- 本文标题:首屏和白屏时间
- 本文作者:灵感胜于汗水
- 创建时间:2022-10-31 22:31:33
- 本文链接:https://cjhsyc.github.io/2022/10/31/首屏和白屏时间/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!