Skip to main content

قوانین Performance

Performance باید در طراحی query، pagination و عملیات سنگین دیده شود، نه فقط بعد از کند شدن production.

Query

  • N+1 ممنوع است
  • query داخل loop ممنوع است
  • eager loading باید هدفمند باشد
  • برای بررسی وجود رکورد از exists() به جای count() استفاده شود
  • ستون‌های غیرضروری select نشوند

Pagination

  • لیست‌های API و tableها باید pagination داشته باشند
  • endpointهای export باید محدودیت، queue یا chunk داشته باشند
  • بازگرداندن کل داده بدون limit ممنوع است

Batch و عملیات سنگین

  • عملیات حجیم باید chunk شود
  • کارهای زمان‌بر باید queue شوند
  • jobها باید idempotent طراحی شوند
  • retry باید اثر جانبی تکراری ایجاد نکند

Cache

استفاده از cache باید همراه با strategy روشن باشد:

  • کلید cache
  • زمان انقضا
  • شرایط invalidation
  • اثر روی داده stale