avatar

目录
web性能优化

前端页面性能优化的几种方式
页面性能优化办法有哪些?

答题思路:按照从输入 url 到加载页面的顺序思考,寻找可以优化的点

量化web性能的工具:chrome 检查工具,Audits 选项

DNS 查询

减少 DNS 查询,可以把资源放在一个域名下

使用 CDN (content distribute network, 内容分发网络)加速

  • 本质是一种缓存,将数据缓存在离用户最近的地方,使得用户以最快速度获取数据。

建立 TCP 链接

http 请求头加 keep-alive 进行连接复用,减少 TCP 连接次数

  • HTTP 1.0 默认非 Keep-Alive 模式,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接;用 Keep-Alive 模式(连接重用)时,HTTP 请求头中添加一个字段 Connection: Keep-Alive,服务器也会在响应头中添加一个同样的字段来使用 Keep-Alive。Keep-Alive 功能使客户端到服务器端的连接持续有效,出现后继请求时,能避免了重新建立连接。

  • HTTP 1.1 默认启用 Keep-Alive ,除非在请求头或响应头中指明要关闭:Connection: Close

  • keep-alive

HTTP 2.0 多路复用

  • 多路复用(MultiPlexing),即连接共享,即每一个 request 都是是用作连接共享机制的。一个 request 对应一个 id ,这样一个连接上可以有多个 request,每个连接的 request 可以随机的混杂在一起,接收方可以根据 request 的 id 将 request 再归属到各自不同的服务端请求里面。

发送HTTP请求

减少http请求,合理设置http缓存

  • 合并 CSS , 合并 JavaScript , 合并图片等.将浏览器一次需要的这些文件合并成一个, 那么就只需要一次请求了.
  • 使用 http 头中的 cache-control 和 expiress 属性可以设定浏览器强缓存

减小cookie

  • cookie 包含在每次请求和响应中, 太大的 cookie 回严重影响数据传输

接收响应

压缩 html , css , js 等文件

通过设置协商缓存,接收响应 304 ,使用缓存资源

服务端采用 Gzip 压缩,客户端接收压缩资源再解压

页面优化

CSS放在顶部<head>

  • 文件逐行解析,遇到标签构建 dom ,但不渲染,只有 CSS 全部下载,解析完毕才开始渲染 dom

JS放在<body>底部,或者使用异步脚本或延迟脚本(不会阻塞 DOM 渲染)

  • 加载 JS 会立即执行,会阻塞 dom 渲染,并且 js 放在底部可以拿到之前的节点

懒加载

  • 减少首屏加载时间,减少无效资源的加载
  • 将页面上的图片的 src 属性设为空字符串,而图片的真实路径则设置在 data-src 属性中, 当页面滚动的时候需要去监听 scroll 事件,在 scroll 事件的回调中,判断我们的懒加载的图片是否进入可视区域,如果图片在可视区内将图片的 src 属性设置为 data-src 的值,这样就可以实现延迟加载。

预加载

  • 提前加载需要的资源,比如浏览第一页内容时,提前加载第二页的页面资源
文章作者: GRIT
文章链接: https://grit0821.github.io/Blog/2019/12/02/web%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Grit's World