08 — 性能优化方法论

核心规律:先测量再优化,用数据说话 一句话:优化是持续的过程,不是单次任务


一、核心规律

1.1 优化决策树

flowchart TD
    A["性能问题"] --> B["1. 建立基准<br/>记录当前性能指标"]
    B --> C["2. 定位瓶颈<br/>profiling找出慢在哪里"]
    C --> D["3. 制定方案<br/>按优先级处理"]
    D --> E["4. 实施优化<br/>小步快跑"]
    E --> F["5. 验证效果<br/>对比基准数据"]
    F --> G{"达标?"}
    G -->|否| C
    G -->|是| H["6. 持续监控<br/>防止退化"]
    
    style A fill:#ffebee
    style H fill:#e8f5e9

1.2 优化三原则

1. 先测量,再优化 — 不要凭感觉
2. 一次只优化一个变量 — 便于定位效果
3. 优化是持续过程 — 没有终点

二、性能瓶颈定位

2.1 分层排查法

flowchart LR
    subgraph 前端["🖥️ 前端"]
        F1["首屏加载时间"]
        F2["交互响应时间"]
    end
    
    subgraph 网络["🌐 网络"]
        N1["DNS解析"]
        N2["TCP连接"]
        N3["TLS握手"]
    end
    
    subgraph 后端["⚙️ 后端"]
        B1["PHP执行时间"]
        B2["框架开销"]
        B3["业务逻辑"]
    end
    
    subgraph 数据库["💾 数据库"]
        D1["查询时间"]
        D2["连接开销"]
        D3["锁等待"]
    end
    
    F1 & F2 --> N1 & N2 & N3
    N1 & N2 & N3 --> B1 & B2 & B3
    B1 & B2 & B3 --> D1 & D2 & D3
    
    style D1 fill:#ffebee
    style B1 fill:#fff3e0
    style N1 fill:#e3f2fd
    style F1 fill:#e8f5e9

2.2 常用 profiling 工具

层级工具用途
PHPBlackfire / Xdebug函数级性能分析
PHPopcache_get_status()OPcache状态
MySQLEXPLAIN / mysqldumpslow慢查询分析
Redisredis-cli —stat实时监控
系统top / htop / iostat资源监控
全链路Laravel Telescope请求级追踪

三、前端性能优化

3.1 关键指标

指标含义健康值
FCP首次内容绘制< 1.8s
LCP最大内容绘制< 2.5s
FID首次输入延迟< 100ms
CLS累积布局偏移< 0.1

3.2 优化手段

加载优化:
├── 代码分割(Route-level lazy loading)
├── Tree Shaking(移除未使用代码)
├── 图片优化(WebP + 懒加载)
└── CDN加速静态资源

渲染优化:
├── 减少Reflow/Repaint
├── 虚拟列表(长列表)
├── Web Worker(耗时计算)
└── requestAnimationFrame(动画)

四、后端性能优化

4.1 PHP优化

优化点方法效果
OPcache启用OPcacheJIT编译,字节码缓存
PHP-FPM调优进程数并发能力提升
代码避免N+1查询查询次数减少90%
缓存Redis缓存热点数据DB压力降低80%

4.2 数据库优化

查询优化 Checklist:
□ EXPLAIN分析执行计划
□ 避免SELECT *,指定字段
□ 合理使用索引(最左前缀)
□ 避免在索引列上用函数
□ 大结果集分页用游标替代OFFSET
□ 批量操作用chunk()分批处理

五、缓存优化

5.1 缓存层次

L1: CPU缓存(纳秒级)
L2: Redis/内存缓存(微秒级)← 应用层主要使用
L3: 本地缓存APCu(毫秒级)
L4: 数据库(毫秒级)
L5: 磁盘/对象存储(秒级)

5.2 缓存策略

策略适用场景风险
Cache-Aside读多写少首次查询穿透
Write-Through强一致性要求写入性能较低
Write-Behind高写入吞吐数据可能丢失
Refresh-Ahead热点数据需要提前预热

六、本章总结

核心规律:性能优化是持续的过程。建立「监控→分析→优化→验证」的闭环,用数据驱动决策。

关键记忆点

  • ✅ 先测量再优化,不要凭感觉
  • ✅ 瓶颈可能在任何一层,逐层排查
  • ✅ 缓存是最有效的优化手段之一
  • ✅ 监控是防止退化的关键

延伸阅读