搜索

PythonReactSEOPDF
GitHub Skill

nestjs-performance

Fastify adapter, Scope management, and Compression.

HoangNguyen0403☆ 143 仓库 Stars48 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Performance Tuning

Priority: P1 (OPERATIONAL)

High-performance patterns and optimization techniques for NestJS applications.

  • Adapter: Use FastifyAdapter instead of Express (2x throughput).

  • Compression: Enable Gzip/Brotli compression.

    // main.ts
    app.use(compression());
    
  • Keep-Alive: Configure http.Agent keep-alive settings to reuse TCP connections for upstream services.

Scope & Dependency Injection

  • Default Scope: Adhere to SINGLETON scope (default).
  • Request Scope: AVOID REQUEST scope 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 LazyModuleLoader for heavyweight modules (e.g., Admin panels).

Caching Strategy

  • Application Cache: Use @nestjs/cache-manager for computation results.
    • Deep Dive: See Caching & Redis for L1/L2 strategies and Invalidation patterns.
  • HTTP Cache: Set Cache-Control headers 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-transformer is 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 relations carefully or DataLoader for 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 ClusterModule to utilize all CPU cores. In K8s, prefer ReplicaSets.

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-26
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!