提升页面性能的方法:
- 资源压缩合并,减少HTTP请求(如开启gzip压缩)
- 非核心代码的异步加载
- 利用浏览器缓存
- 使用CDN加速资源(网络优化,第一次打开尤其明显)
- 预解析DNS
非核心代码的异步加载:
- 异步加载的方式
- 动态脚本加载(js创建标签,加到body上)
- defer(script的标签上加defer/async属性)
- async
- 异步加载方式的区别
- defer是先加载完,但是在HTML解析完之后才会执行,多个defer的情况下,按照顺序执行js代码
- async是在加载完之后立即执行,多个async情况下,顺序与执行先后无关
利用浏览器缓存:
- 缓存的分类
- 强缓存:不请求直接使用
- 协商缓存:浏览器发现本地有副本,请求服务器本地文件是否过期,再决定是否使用缓存文件
- 缓存的原理
- 缓存本质上是资源文件在浏览器中存在的副本或备份
response head响应头:
强缓存方式:
//服务器时间-绝对时间
expires: Fri, 03 Jan 2020 00:48:11 GMT
//相对时间
cache-control: max-age=14400(单位秒)
//强缓存失效的情况下使用协商缓存
last-modified: Fri, 15 Nov 2019 14:43:48 GMT//服务器下发,位于响应头中
if-modified-since: Fri, 27 Dec 2019 16:15:10 GMT //请求头中携带
//上述两种方法不能确定内容有没有改变
etag: W/"5e062e0e-14236"
if-none-match: W/"5e062e0e-14236"
预解析DNS:
<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="//host_name_to_prefetch.com">