面试知识归纳:2.9性能
页面性能
提升页面性能的方法有哪些
- 资源压缩合并,减少HTTP请求
- 非核心代码的异步加载
- 异步加载的方式
- 各种方式间的区别
- 利用浏览器缓存
- 缓存分类
- 缓存原理
- 使用CDN
- 预解析DNS
异步加载的方式
异步加载方式
- 动态脚本加载, 通过动态创建节点,插入到head或body中
- defer
- async
区别
- defer是在HTML解析完之后才执行的,如果是多个,按照加载的顺序依次执行
- async是在加载完之后立即执行,如果是多个,执行顺序和加载顺序无关
浏览器缓存
缓存分类:
- 强缓存
- Expires
Expires: Thu, 21 March 2018 23:00:02 GMT - Cache-Control
Cache-Control: max-age=3600
- 协商缓存
- Last-Modified If-Modified-Since
Last-Modified: Thu, 21 March 2018 23:00:02 GMT - Etag If-None-Match
怎么理解? 强缓存就是,不请求,命中就读取缓存。协商缓存,通过服务器,命中才读取缓存。
预解析DNS
html
<!-- 强制打开a标签的预解析 http默认开启,https需要写这句 -->
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="schema://host_name_to_prefetch.com" />- 资源请求
- 尽可能并发加载资源, 静态文件CDN
- 资源大小控制,代码压缩合并
- 缓存策略
- 页面加载
- 动态脚本加载
- async defer
- 渲染
- 非阻塞
- 优化首屏渲染 前端路由(动态脚本加载)
- 快速响应
