页面性能

页面性能

提升页面性能的方法

  1. 资源压缩合并,减少HTTP请求
  2. 非核心代码异步加载 -> 异步加载的方式 -> 异步加载的区别
  3. 利用浏览器缓存 -> 缓存的分类 -> 缓存的原理
  4. 利用CDN
  5. 预解析 浏览器默认预解析(https默认关闭预解析)
    dns-prefetch x-dns-prefetch-control

异步加载

异步加载的方式

  1. 动态脚本加载
  2. defer
  3. async

    异步加载的区别

  4. defer是在html解析完之后才会执行,若是多个,按照加载顺序执行
  5. async是在加载完之后立即执行,若是多个,执行顺序与加载顺序无关

浏览器缓存

资源文件在浏览器中存在的备份/副本

缓存的分类

强缓存

浏览器不询问服务器,直接使用本地的缓存

Expires 服务器的绝对时间,与浏览器时间可能存在偏差

Cache-Control 跟的是相对时间,以秒为单位,在3600S内直接使用缓存

都下发的话,以后者为准

协商缓存

浏览器发送请求询问服务器是否可以使用本地缓存文件

Last-Modified 服务器下发的

If-Modified-Since 请求的 带着的

If-None-Match

Etag Hash值

Last-Modified常与If-Modified-Since一起由客户端将Last-Modified值包括在HTTP头信息中发给服务端进行处理。

通过时间判断数据有没有更新不能很好的确定文件有没有更改;

Etag可以理解为根据文件内容计算的hash值;

ETag常与If-None-Match或者If-Match一起,由客户端通过HTTP头信息(包括ETag值)发送给服务端处理。