قوانین 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