提升页面性能的方法:

  1. 资源压缩合并,减少HTTP请求(如开启gzip压缩)
  2. 非核心代码的异步加载
  3. 利用浏览器缓存
  4. 使用CDN加速资源(网络优化,第一次打开尤其明显)
  5. 预解析DNS

非核心代码的异步加载:

  1. 异步加载的方式
    1. 动态脚本加载(js创建标签,加到body上)
    2. defer(script的标签上加defer/async属性)
    3. async
  2. 异步加载方式的区别
    1. defer是先加载完,但是在HTML解析完之后才会执行,多个defer的情况下,按照顺序执行js代码
    2. async是在加载完之后立即执行,多个async情况下,顺序与执行先后无关

利用浏览器缓存:

  1. 缓存的分类
    1. 强缓存:不请求直接使用
    2. 协商缓存:浏览器发现本地有副本,请求服务器本地文件是否过期,再决定是否使用缓存文件
  2. 缓存的原理
  3. 缓存本质上是资源文件在浏览器中存在的副本或备份
  1. response head响应头:
  2. 强缓存方式:
  3. //服务器时间-绝对时间
  4. expires: Fri, 03 Jan 2020 00:48:11 GMT
  5. //相对时间
  6. cache-control: max-age=14400(单位秒)
  1. //强缓存失效的情况下使用协商缓存
  2. last-modified: Fri, 15 Nov 2019 14:43:48 GMT//服务器下发,位于响应头中
  3. if-modified-since: Fri, 27 Dec 2019 16:15:10 GMT //请求头中携带
  4. //上述两种方法不能确定内容有没有改变
  5. etag: W/"5e062e0e-14236"
  6. if-none-match: W/"5e062e0e-14236"

预解析DNS:

  1. <meta http-equiv="x-dns-prefetch-control" content="on">
  2. <link rel="dns-prefetch" href="//host_name_to_prefetch.com">