Web性能优化

Web Performance Optimization

slides.newfuture.cc/web-performance-optimization/
@New Future

目录

  • web 处理基本流程
  • 后端
  • 前端
  • 实践指导

time line

基本流程

后端输出 ==> 加载前端资源 ==> 渲染交互

后端渲染时间消耗

操作基本时间消耗备注说明
解析和反向代理ms级复杂匹配修改可能变慢
URL路由ms级复杂的hook可能变慢
远程API内网0.5s级/公网s级一般不超过60s
数据库操作100ms~1s写比读慢
文件操作10ms级写比读慢
模板解析渲染10ms嵌套或者ASP控件会慢

优化原则

  1. 尽量加快首页输出时间
  2. 优先使用内存缓存
  3. 尽量减少远程调用
    • 缓存
    • 避免再循环中调用
  4. 数据库操作避免大量写入
    • 减少和合并写操作
    • 避免循环中操作数据库

前端消耗

  • 文件下载 (后端和网络影响)
  • 解析执行
  • 页面渲染
  • 事件捕获

资源下载

操作基本时间消耗备注说明
小静态资源下载s级与网速和服务器相关
大静态资源下载1s~10级与网络状况相关
缓存ms级 

解析执行

操作基本时间消耗备注说明
HTML解析10ms级复杂html可能更长
JS框架执行100ms级 
CSS解析100ms级可能会二次加载

优化原则

  • 精简首次渲染
  • 压缩资源
  • 减少合并请求,异步加载非首要内容
  • 简化结构和缩小体积

提高WEB性能指南

  • 后端开发
  • 前端开发
  • 服务器和CDN

三个方面: 前两个coding和设计时注意,后一个通过升级配置实现

优化后端编码

  1. 尽量使用 缓存 (内存和redis) 和允许必要的客户端缓存
  2. 分离静态资源到CDN
  3. 减少和优化远程API调用,首页尽量避免调用
  4. 减少和优化数据库操作,首页避免数据库写入和多次操作
  5. 尽量减少重定向,避免多次重定向
  6. 尽量减少cookie的使用

优化前端

  1. 文件 压缩打包 (<200K最佳,不要超过500K)
  2. JS尽量 减少库依赖 和 分离css
  3. CSS 避免使用 import计算表达式
  4. css在head,js在</body>前引入,考虑异步或延迟
  5. HTML和CSS 尽量减少DOM嵌套层次,规范语法
  6. 避免使用 iframecookie

优化服务器和CDN配置

  1. 开启GZip 压缩(文本效率高)
  2. 最优化设置 缓存头 Cache-Control
  3. CDN 开启 HTTP2 (多图效率高)
  4. 设置 ETagExpires
  5. CDN 使用单独域名,无cookie
  6. 配置优化HTTPS (算法选择,简化握手)

性能分析工具

THE END

THANKS

Web性能优化

CODE: https://github.com/NewFuture/slides
LINK: https://slides.newfuture.cc/web-performance-optimization/