前端增加 HTTP 加速缓存,通过 http 协议的 Cache-Control,Expired 等缓存字段控制失效时间。
软件:
- [推荐] Varnish: https://varnish-cache.org/ https://packagecloud.io/varnishcache
- Squid: http://www.squid-cache.org/
对于大量的图片,js 脚本,css 样式文件首选 CDN 网络分发,云计算公司阿里,腾讯,华为都提供 CDN支持
- 站点使用 http2 协议,开启静态资源 server push(采用 CDN 可忽略)
- 请求优先接受 br 压缩,可选 gzip, 减少网络传输数据体积
- 使用 service worker 进行资源预加载,并进行本地缓存,对于个别 api 如多语言也可将其保存在本地
- 单页应用进行文件代码分割和 tree shaking, 移除注释和空格,减小体积
- 图片采用 webp 编码格式,以减少传输的体积
- CSS 采用 SASS,LESS 预处理器的时候需要注意避免 class 嵌套太多,过量的嵌套会增大 CSS 文件的体积
- 合理使用 session storage 或者 local storage 进行数据缓存
- 使用服务端渲染 SSR,优先采用 Nextjs,Nuxtjs,加快首屏渲染,优化 SEO
- 使用 chrome 的 Lighthouse 和 Profile 进行针对性优化
- 对于变更较少或不变的数据设置 http 缓存头进行缓存
- 设置响应压缩,gzip,br,zstd,gzip 一般压缩等级设置为 6
- 设置 redis 或者 memcached 数据缓存
- 尽量构建无状态应用从而易于多点部署,从而提高整体性能
- 通过 framegraph,K6 等压测和 profile 工具进行应用调优
- 采用 nodejs 或者 go 等性能较好的语言(谨慎)
-
使用性能较好的框架和库
- fastify
- undici
- pino
- ajv
-
http client 开启 http agent 的 keep alive
-
数据库链接开启连接池
-
通过 Clinic js 进行性能分析
-
通过 Pm2 进行应用程序管理和集群运行模式,有效利用多核处理器并且在应用崩溃时能自动重启