nestjs-performance
Fastify adapter, Scope management, and Compression.
安装与使用
请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。
查看来源 ↗使用指南技能说明
Performance Tuning
Priority: P1 (OPERATIONAL)
High-performance patterns and optimization techniques for NestJS applications.
-
Adapter: Use
FastifyAdapterinstead of Express (2x throughput). -
Compression: Enable Gzip/Brotli compression.
// main.ts app.use(compression()); -
Keep-Alive: Configure
http.Agentkeep-alive settings to reuse TCP connections for upstream services.
Scope & Dependency Injection
-
Default Scope: Adhere to
SINGLETONscope (default). -
Request Scope: AVOID
REQUESTscope unless absolutely necessary.- Pro Tip: A single request-scoped service makes its entire injection chain request-scoped.
-
Solution: Use Durable Providers (
durable: true) for multi-tenancy.
-
Lazy Loading: Use
LazyModuleLoaderfor heavyweight modules (e.g., Admin panels).
Caching Strategy
-
Application Cache: Use
@nestjs/cache-managerfor computation results.- Deep Dive: See Caching & Redis for L1/L2 strategies and Invalidation patterns.
-
HTTP Cache: Set
Cache-Controlheaders for client-side caching (CDN/Browser). - Distributed: In microservices, use Redis store, not memory store.
Queues & Async Processing
- Offloading: Never block the HTTP request for long-running tasks (Emails, Reports, webhooks).
-
Tool: Use
@nestjs/bull(BullMQ) or RabbitMQ (@nestjs/microservices).- Pattern: Producer (Controller) -> Queue -> Consumer (Processor).
Serialization
-
Warning:
class-transformeris CPU expensive. -
Optimization: For high-throughput READ endpoints, consider manual mapping or using
fast-json-stringify(built-in fastify serialization) instead of interceptors.
Database Tuning
-
Projections: Always use
select: []to fetch only needed columns. -
N+1: Prevent N+1 queries by using
relationscarefully orDataLoaderfor Graph/Field resolvers. -
Connection Pooling: Configure pool size (e.g.,
pool: { min: 2, max: 10 }) in config to match DB limits.
Profiling & Scaling
-
Offloading: Move CPU-heavy tasks (Image processing, Crypto) to
worker_threads. -
Clustering: For non-containerized environments, use
ClusterModuleto utilize all CPU cores. In K8s, prefer ReplicaSets.
使用示例
查看来源仓库中的使用示例与配置说明。
查看来源 ↗来源历史
- 收录时间
- 2026-01-20
- 索引更新时间
- 2026-01-26
- Branch
- main
收录与同步日期属于本站记录。源码修改历史请查看来源仓库。
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!