前端性能优化

常用的前端性能优化手段

1.利用好http缓存。

http缓存分为强制缓存跟协商缓存。
①强制缓存:
A.Cache-Control,有如下几个值设置:

  • no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器.
  • no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源).
  • private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问服务器.
  • public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等.
  • max-age: 相对过期时间, 即以秒为单位的缓存时间.
  • no-cache, private: 打开新窗口时候重新访问服务器, 若设置max-age, 则缓存期间不访问服务器.
  • private, 正数的max-age: 后退时候不会访问服务器.
  • no-cache, 正数的max-age: 后退时会访问服务器.

B. Expires

  • 以分钟为单位的绝对过期时间, 优先级比Cache-Control低

②协商缓存
A.Etag
B.Last-Modified
备注:通常我们都是在ngnix的location 中设置静态资源的缓存,只需添加add_header Cache-Control no-store,
一般不会不建议使用强制缓存,所以直接设置Cache-Control no-store,这样的话就可以利用协商缓存的etag跟Last-Modified这2个缓存便能满足缓存上的优化

2.升级http版本。

我们常用的htto版本是http1.1,但是我们可以把http升到2,http2比http1.1的优势在于:
①http1.1使用的是文本协议,http2使用的是流,并且还有流ID
②http2请求头使用流ID,所以可以实现多路复用
③http2header进行了压缩,同时客户端和服务器端同时维护一张头信息表,所有字段都记录在这张表中,这样后面每次传输只需要传输表里面的索引Id就行,通过索引ID查询表头的值。

3.开启gzip格式

  • 在ngnix中开启gzip格式,目前大部分主流浏览器都支持gzip的格式,项目打包的时候,可以使用Compression的插件,将代码包进行压缩,这可以大大的降低带包文件包(压缩可降低60%的大小)

4.资源合并

  • 利用构建工具,如webpack,vite等,将代码进行合并,比如将css,js分别合并到一个css,js里。

5.资源压缩

  • 利用构建工具,如webpack,vite等,将代码进行压缩

6.路由按需加载

7.使用SSR渲染

  • 使用服务端渲染,不仅可以加快首屏的加载,还有利于增加SEO引擎优化。缺点:增加服务端的压力

8.使用前端微服务

  • 如果项目比较大,我们可以根据功能模块,将项目拆成多个微应用,常用的微前端有MicroApp,qiankun等
    MicroApp:采用CustomElement(自定义标签)渲染的原理,以组件的形式引入
    qiankun:采用的基于single-spa(shadowDOM)的原理实现,以路由的形式引入

9.图片懒加载

  • 通常在首页如果需要加载图片的时候,我们可以设置图片为懒加载,并将图片上传到OSS,减少图片对前端服务器的带宽占用。

10.代码优化

  • 尽量减少CSS的重绘重排,页面不宜过多的DOM节点,数据量大的情况下,使用分页,虚拟列表等方式渲染

11.设置脚本的async,defer

给脚本添加async,defer属性

  • async:异步加载,加载完会立刻执行脚本,阻碍DOM的渲染

  • defer:异步加载,DOM渲染完再去执行当前的脚本。如果多个defer,则等待所有defer下载完依次执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值