SuperAPI AI 工具集

symfony-yoandev-performance

通用与其它

查看项目

更新于 10-16 05:42

技能介绍

用途:面向 Symfony 应用的按需性能优化技能,核心原则是先测量、再修复、最后加测试。所有规则都基于实测,不做预防性优化。

主要能力:

  1. 测量:用 Profiler 的 Doctrine 面板查看查询数量、单条耗时、SQL 及触发代码行;非 SQL 瓶颈用 symfony/stopwatch 命名事件定位。注意 stopwatch 在骨架中是 require-dev,--no-dev 安装会导致容器编译失败,需测量后移除或改为 require。
  2. 消除 N+1:三条规则——不在仓储外遍历实体集合;列表查询显式 join(->leftJoin('b.reviews','r')->addSelect('r'));不用 count($book->getRatings()),改为仓储方法。
  3. 查询计数测试:对列表端点断言精确查询数,并断言查询数不随行数增长。注意 DBAL 4 已移除 DebugStack,改用中间件;测试需开启调试,否则计数为 0 会误通过。
  4. 减少水合:用 SELECT NEW 投影到只读 DTO;超大结果集用 toIterable() 配合 $em->clear()。
  5. 缓存:HTTP 缓存默认不加,仅在测量后使用;含个人数据不可 public;触碰 session 会强制 private。应用缓存放在装饰器中,用 TagAwareCacheInterface 按标签失效,TTL 仅作兜底。Doctrine 查询缓存建议生产启用,结果缓存按查询开启,二级缓存不使用。

适用场景:Symfony 页面变慢、查询数随数据增长、需要防止性能回归的项目。

限制:不涉及 OPcache、部署优化、日志告警、测试结构、AssetMapper 与 HTTP/2,这些属于其他技能。具体配置细节见其 references 文件。