سرویس فعال — کش پاسخ در لبه

شتاب‌دهندهٔ API: پاسخ سریع‌تر از لبهٔ ایران

پاسخ‌های GET قابل‌کش API شما مطابق هدر Cache-Control روی لبهٔ داخل ایران نگه داشته می‌شود، SSL روی لبه تمام می‌شود و محدودیت نرخ هر IP جلوی فشار ناگهانی را می‌گیرد. CORS، هدر Host و مهلت پاسخ مبدأ را هم از پنل یا API تنظیم می‌کنید.

GET /api/v1/products
پاسخ
200 OK
منبع پاسخ
کش لبه
سرور اصلی
درگیر نشد
اتصال
HTTPS روی لبه
نمونهٔ یک درخواست تکراری که از کش لبه جواب گرفته است.

معرفی

شتاب‌دهندهٔ API با کش پاسخ روی لبه

پاسخ‌های GET که سرور شما با Cache-Control عمومی علامت زده، روی لبهٔ داخل ایران نگه داشته می‌شوند و درخواست‌های تکراری دیگر به بک‌اند نمی‌رسند. اتصال SSL روی لبه برقرار می‌شود و گواهی آن خودکار صادر و تمدید می‌شود.

محدودیت نرخ هر IP جلوی اسکریپت‌های پرتکرار و اوج ناگهانی را پیش از رسیدن به سرور می‌گیرد. CORS، فهرست IP مجاز، هدر Host و مهلت پاسخ مبدأ را از پنل یا با API ایران‌کلاد برای هر دامنه تنظیم می‌کنید.

برای GET
کش پاسخ
بر اساس Cache-Control
سقف پیش‌فرض هر IP
۱۰۰ در ثانیه
قابل تغییر
روی لبه
SSL خودکار
صدور و تمدید
پرداخت به‌اندازهٔ مصرف
بدون هزینهٔ ثابت
خروجی رایگان

قابلیت‌ها

چطور API را سریع‌تر و امن‌تر می‌کند؟

تنظیمات لبه که بار تکراری را از بک‌اند برمی‌دارند، بدون تغییر کد.

کش پاسخ‌ها

پاسخ‌های GET عمومی مطابق Cache-Control سرور شما روی لبه نگه داشته می‌شوند.

محدودیت نرخ هر IP

سقف درخواست در ثانیه و دقیقه؛ درخواست اضافه با کد ۴۲۹ در لبه رد می‌شود.

SSL روی لبه

گواهی خودکار، HSTS اختیاری و هدرهای امنیتی برای همهٔ پاسخ‌ها.

CORS با یک کلید

هدرهای Access-Control برای فرانت‌اند و اپ‌هایی که از دامنهٔ دیگر صدا می‌زنند.

پاک‌کردن کش

کش کل دامنه را پس از انتشار نسخهٔ جدید با یک دکمه خالی کنید.

تنظیم با API

کش، سقف نرخ، CORS و مهلت مبدأ را در pipeline استقرار خود تغییر دهید.

قیمت

هزینهٔ شتاب‌دهندهٔ API

بدون اشتراک ماهانه؛ فقط مصرف بیش از سهمیهٔ رایگان هر ماه از کیف پول کسر می‌شود.

ترافیک خروجی

رایگان

پاسخ‌های API بدون سقف حجم

درخواست مازاد

۱۰۶ تومان / ۱۰٬۰۰۰ درخواست

پس از ۱ میلیارد درخواست رایگان در ماه، مبدأ داخل ایران (خارج از ایران: ۱۵۸ تومان)

ترافیک ورودی مازاد

۱٬۶۵۰ تومان / گیگابایت

پس از ۱۰ گیگابایت رایگان در ماه

کش پاسخ، محدودیت نرخ، CORS و SSL هزینهٔ جداگانه ندارند. مصرف ماه جاری در بخش CDN پنل نمایش داده می‌شود. جزئیات و مثال محاسبه در راهنمای هزینه.

کش پاسخ، محدودیت نرخ و CORS را در تنظیمات CDN هر دامنه روشن کنید؛ دامنه باید در DNS پنل باشد و پروکسی لبه روی آن روشن باشد.

ثبت‌نام و فعال‌سازی

حساب دارید؟ وارد شوید تا مستقیم به تنظیمات CDN بروید.

۵ گام تا شروع

مراحل فعال‌سازی

  1. گام ۱: روشن‌کردن CDN برای دامنهٔ API

    در بخش DNS پنل، پروکسی لبه را برای رکورد api.yourdomain.com روشن کنید.

  2. گام ۲: روشن‌کردن کش پاسخ

    در تنظیمات CDN همان دامنه، گزینهٔ شتاب‌دهندهٔ API (کش پاسخ) را فعال کنید.

  3. گام ۳: تنظیم Cache-Control در بک‌اند

    برای endpoint‌های عمومی public, max-age=60 و برای پاسخ‌های شخصی private یا no-store بفرستید.

  4. گام ۴: تنظیم محدودیت نرخ و CORS

    سقف درخواست هر IP را متناسب با رفتار کلاینت‌ها تعیین کنید و در صورت نیاز CORS را روشن کنید.

  5. گام ۵: تست و پایش

    با curl -I دو بار یک endpoint را بخوانید و هدرهای پاسخ را مقایسه کنید؛ نرخ کش را در تحلیل ترافیک CDN ببینید.

راهنمای کامل

راهنمای کامل شتاب‌دهندهٔ API روی لبهٔ ایران‌کلاد

شتاب‌دهندهٔ API مجموعه‌ای از تنظیمات لبه است که بار تکراری را از روی بک‌اند شما برمی‌دارد: کش پاسخ‌های GET بر اساس Cache-Control، محدودیت نرخ هر IP، کنترل CORS و دسترسی، و تنظیم رفتار اتصال به سرور اصلی. این راهنما توضیح می‌دهد هر تنظیم دقیقاً چه می‌کند، چطور بک‌اند را برای کش آماده کنید، هزینه چطور محاسبه می‌شود و چه کارهایی هنوز پشتیبانی نمی‌شود. پایهٔ همهٔ این قابلیت‌ها Edge Proxy است.

۱۰ بخش حدود ۶ دقیقه مطالعه

فهرست مطالب

شتاب‌دهندهٔ API چیست و برای چه کسی مناسب است؟

بیشتر API‌ها بخش بزرگی از درخواست‌هایشان تکراری است: فهرست محصولات، دسته‌بندی‌ها، قیمت‌ها، تنظیمات اپلیکیشن یا محتوای صفحهٔ اول اپ موبایل. وقتی هزاران کاربر هم‌زمان اپ را باز می‌کنند، سرور شما بارها و بارها همان query را اجرا و همان JSON را تولید می‌کند. شتاب‌دهندهٔ API این پاسخ‌ها را روی لبه نگه می‌دارد تا فقط یک بار ساخته شوند.

این سرویس برای تیم‌هایی مناسب است که اپ موبایل، فرانت‌اند SPA یا API عمومی برای شرکا دارند و نمی‌خواهند برای هر اوج ترافیک سرور را بزرگ‌تر کنند. همچنین برای API‌هایی که باید جلوی سوءاستفاده یا اسکریپت‌های پرتکرار محافظت شوند، محدودیت نرخ لبه یک لایهٔ ساده و مؤثر است.

کد بک‌اند تغییر نمی‌کند؛ کافی است هدرهای Cache-Control درست بفرستید و DNS دامنهٔ API را پشت لبه قرار دهید. اگر API هنوز میزبان ندارد، می‌توانید آن را روی سرور ابری یا سرور بدون سرور ایران‌کلاد اجرا کنید.

کش پاسخ دقیقاً چطور کار می‌کند؟

وقتی گزینهٔ کش پاسخ برای یک دامنه روشن است، لبه برای هر درخواست GET ابتدا کش خودش را بررسی می‌کند. اگر پاسخ معتبری داشته باشد، بی‌درنگ آن را برمی‌گرداند و درخواست به سرور شما نمی‌رسد. اگر نداشته باشد، درخواست را به سرور اصلی می‌فرستد و پاسخ را، در صورتی که Cache-Control اجازه دهد، برای درخواست‌های بعدی نگه می‌دارد.

مدت نگه‌داری را خود سرور شما با max-age یا s-maxage تعیین می‌کند. پاسخ‌هایی با private‏، no-store یا no-cache نگه داشته نمی‌شوند. به این ترتیب تصمیم دربارهٔ اینکه چه چیزی عمومی و چه چیزی شخصی است در کد شما باقی می‌ماند، نه در یک فهرست قانون جداگانه در پنل.

کش پاسخ در لبه پیش از محدودیت نرخ بررسی می‌شود، پس پاسخ‌هایی که از کش می‌آیند بار پردازشی سرور را صفر می‌کنند. اثر واقعی کش را در ستون نرخ کش تحلیل ترافیک CDN برای همان دامنه می‌بینید.

بازگشت به فهرست مطالب

بک‌اند را چطور برای کش آماده کنیم؟

مهم‌ترین کار، فرستادن هدر درست برای هر نوع پاسخ است. این جدول یک نقطهٔ شروع عملی است:

نوع endpointهدر پیشنهادیتوضیح
فهرست محصولات یا دسته‌هاpublic, max-age=60یک دقیقه تازگی برای بیشتر فروشگاه‌ها کافی است
تنظیمات اپ و محتوای ثابتpublic, max-age=3600تا یک ساعت بدون مراجعه به سرور
قیمت لحظه‌ای یا موجودیpublic, max-age=5کش کوتاه فقط برای جذب اوج هم‌زمان
پروفایل، سبد خرید، سفارشprivate, no-storeهرگز در لبه نگه داشته نمی‌شود
درخواست‌های POST و PUTنیاز نداردهمیشه مستقیم به سرور می‌رسند

اگر پاسخ به هدر Authorization یا کوکی وابسته است، حتماً private بفرستید تا پاسخ یک کاربر به کاربر دیگر نرسد.

بازگشت به فهرست مطالب

محدودیت نرخ هر IP

هر دامنهٔ پشت لبه دو سقف دارد: تعداد درخواست هر IP در ثانیه و در دقیقه. مقدار پیش‌فرض ۱۰۰ در ثانیه و ۱۰۰۰ در دقیقه است و می‌توانید سقف ثانیه‌ای را بین ۱ تا ۱۰٬۰۰۰ و سقف دقیقه‌ای را بین ۱ تا ۱۰۰٬۰۰۰ تنظیم کنید. درخواست اضافه با کد ۴۲۹ در لبه رد می‌شود.

سقف ثانیه‌ای جلوی انفجار لحظه‌ای، مثل یک حلقهٔ معیوب در کلاینت یا اسکریپت اسکرپ، را می‌گیرد و سقف دقیقه‌ای جلوی فشار پیوسته. برای API عمومی سقف را کمی بالاتر از بیشترین رفتار سالم کلاینت‌ها بگذارید و اثر آن را چند روز در آمار ببینید.

توجه کنید که سقف به ازای IP است. کاربرانی که پشت NAT اپراتور یا شبکهٔ یک سازمان هستند ممکن است یک IP مشترک داشته باشند؛ برای اپ‌های موبایل پرمخاطب، سقف دقیقه‌ای را محافظه‌کارانه انتخاب نکنید.

بازگشت به فهرست مطالب

تنظیمات اتصال و دسترسی

علاوه بر کش و محدودیت نرخ، این تنظیمات برای هر دامنه در دسترس است:

  • CORS: هدرهای Access-Control-Allow-* برای همهٔ مبدأها و متدهای GET‏، POST‏، PUT‏، DELETE و OPTIONS
  • HSTS: مرورگر را موظف می‌کند یک سال فقط از HTTPS استفاده کند
  • هدر Host سفارشی: وقتی سرور اصلی با نام دیگری، مثل origin.example.com، پاسخ می‌دهد
  • مهلت پاسخ مبدأ: بین ۱ تا ۳۰۰ ثانیه برای endpoint‌های سبک یا گزارش‌های سنگین
  • فهرست مجاز IP: فقط سرورهای شریک به API دسترسی داشته باشند
  • فهرست مسدودی IP: آدرس یا رنج مزاحم با کد ۴۰۳ رد شود
  • پنهان‌سازی هدر Server: اطلاعات نرم‌افزار سرور در پاسخ نمایش داده نشود
  • هدرهای امنیتی: nosniff‏، X-Frame-Options و Referrer-Policy روی همهٔ پاسخ‌ها

بازگشت به فهرست مطالب

هزینه و یک مثال محاسبه

شتاب‌دهندهٔ API هزینهٔ ثابت ماهانه ندارد و جزء همان صورت‌حساب مصرفی CDN است. ترافیک خروجی، که در API‌ها بیشترین حجم را دارد، رایگان است. هر ماه ۱ میلیارد درخواست اول و ۱۰ گیگابایت ترافیک ورودی رایگان است و فقط مازاد آن از کیف پول کسر می‌شود.

مثال: APIای با مبدأ داخل ایران که در یک ماه ۱٫۵ میلیارد درخواست دریافت کند، ۵۰۰ میلیون درخواست مازاد دارد؛ یعنی ۵۰٬۰۰۰ بستهٔ ۱۰ هزارتایی ضربدر ۱۰۶ تومان، برابر ۵٬۳۰۰٬۰۰۰ تومان. برای حجم بیش از ۵ میلیارد درخواست در ماه نرخ پایین‌تر ۵۳ تومان اعمال می‌شود. برآورد سایر سرویس‌ها را در ماشین‌حساب هزینه ببینید.

موردرایگان در ماهنرخ مازاد
ترافیک خروجینامحدودرایگان
ترافیک ورودی (بدنهٔ درخواست‌ها)۱۰ گیگابایت۱٬۶۵۰ تومان هر گیگابایت
درخواست، مبدأ داخل ایران۱ میلیارد۱۰۶ تومان هر ۱۰٬۰۰۰ (بیش از ۵ میلیارد: ۵۳)
درخواست، مبدأ خارج از ایران۱ میلیارد۱۵۸ تومان هر ۱۰٬۰۰۰ (بیش از ۵ میلیارد: ۱۰۶)

بازگشت به فهرست مطالب

کش در لبه یا کش داخل اپلیکیشن؟

کش لبه جایگزین Redis یا کش داخل کد نیست؛ این دو مکمل هم‌اند و در لایه‌های مختلف کار می‌کنند:

موضوعکش پاسخ در لبهکش داخل اپ (مثل Redis)
کاهش درخواست به سروربله، درخواست اصلاً نمی‌رسدخیر، فقط پردازش سبک‌تر می‌شود
پاسخ‌های شخصی کاربرمناسب نیستمناسب است
نیاز به تغییر کدفقط هدر Cache-Controlمنطق کش در کد
کنترل حذفپاک‌کردن کل کش دامنهحذف دقیق کلید

برای کش داخل اپ، Redis مدیریت‌شده ایران‌کلاد را کنار شتاب‌دهندهٔ API به کار ببرید.

بازگشت به فهرست مطالب

راه‌اندازی در پنج قدم

دامنه را در DNS ایران‌کلاد اضافه کنید و برای رکورد API پروکسی لبه را روشن کنید؛ گواهی SSL خودکار صادر می‌شود. سپس در تنظیمات CDN همان دامنه کش پاسخ را فعال و سقف محدودیت نرخ را تنظیم کنید.

در بک‌اند برای endpoint‌های عمومی هدر public با max-age مناسب بفرستید. با curl -I دو بار یک endpoint را بخوانید و هدرهای پاسخ را مقایسه کنید. پس از یک تا دو ساعت ترافیک واقعی، نرخ کش را در تحلیل ترافیک بررسی کنید و در صورت نیاز max-age را تغییر دهید. برای بررسی هدرها می‌توانید از ابزار بررسی هدرهای HTTP هم استفاده کنید.

بازگشت به فهرست مطالب

مدیریت خودکار با API ایران‌کلاد

همهٔ تنظیمات این صفحه با API ایران‌کلاد هم قابل خواندن و تغییر است. یک توکن با دسترسی edge:toggle بسازید و با PATCH /api/v1/edge/records/{id}/settings مقادیری مثل api_cache‏، rate_limit_per_sec‏، rate_limit_per_min‏، cors یا origin_timeout را بفرستید. فقط فیلدهایی که ارسال کنید تغییر می‌کنند.

این کار برای تیم‌هایی که زیرساخت را در کد تعریف می‌کنند مفید است: مثلاً پیش از یک کمپین بزرگ سقف نرخ را بالا ببرید و بعد برگردانید. وضعیت گواهی SSL و کل تنظیمات هر دامنه با GET /api/v1/edge/records برگردانده می‌شود. شروع کار را در مستندات API ببینید.

بازگشت به فهرست مطالب

محدودیت‌های فعلی که باید بدانید

پاک‌کردن کش فقط برای کل دامنه انجام می‌شود و پاک‌کردن بر اساس مسیر یا برچسب وجود ندارد. قانون کش جداگانه در پنل، مثل تعیین TTL برای یک مسیر خاص، هم ارائه نمی‌شود و رفتار کش کاملاً از هدرهای سرور شما پیروی می‌کند.

فشرده‌سازی پاسخ در لبه انجام نمی‌شود و ادغام درخواست‌های هم‌زمان یکسان هم تضمین نمی‌شود. محدودیت نرخ فقط بر اساس IP است، نه کلید API یا کاربر. اگر به این قابلیت‌ها نیاز دارید، آن‌ها را در بک‌اند یا یک API Gateway روی سرور خودتان پیاده کنید.

بازگشت به فهرست مطالب بازگشت به ابتدای راهنما

پرسش و پاسخ،  ۱۲ پرسش

سؤالات متداول

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

کدام پاسخ‌های API کش می‌شوند؟
وقتی کش پاسخ روشن باشد، لبه پاسخ درخواست‌های GET را مطابق هدر Cache-Control که سرور شما می‌فرستد نگه می‌دارد. پاسخی که سرور با private یا no-store علامت زده باشد کش نمی‌شود و درخواست‌های POST‏، PUT و DELETE همیشه مستقیم به سرور شما می‌رسند. پس کنترل کامل کش در دست کد بک‌اند شماست.
برای پاسخ‌هایی که زود عوض می‌شوند چه کنم؟
برای آن‌ها max-age کوتاه بفرستید، مثلاً چند ثانیه. حتی کش چندثانیه‌ای در اوج ترافیک باعث می‌شود ده‌ها درخواست یکسان با یک بار مراجعه به سرور جواب بگیرند. داده‌ای که نباید حتی چند ثانیه قدیمی باشد را با no-store علامت بزنید.
غیر از کش، چه چیزی سرعت را بالا می‌برد؟
اتصال TLS بازدیدکننده روی لبهٔ داخل ایران برقرار و گواهی آن خودکار صادر و تمدید می‌شود، پس سرور شما درگیر مدیریت گواهی نیست. فشرده‌سازی پاسخ در لبه فعلاً انجام نمی‌شود؛ اگر پاسخ‌های JSON بزرگ دارید، فشرده‌سازی را روی سرور اصلی فعال نگه دارید.
پاک‌کردن کش (purge) چطور انجام می‌شود؟
از صفحهٔ تنظیمات CDN هر دامنه، دکمهٔ پاک‌کردن کش کل کش همان دامنه را خالی می‌کند. پاک‌کردن انتخابی بر اساس مسیر یا برچسب فعلاً وجود ندارد؛ برای کنترل دقیق‌تر، max-age پاسخ‌ها را متناسب با سرعت تغییر داده تنظیم کنید.
در برابر اوج ترافیک و سوءاستفاده محافظت می‌کند؟
بله، با محدودیت نرخ هر IP: به‌طور پیش‌فرض ۱۰۰ درخواست در ثانیه و ۱۰۰۰ در دقیقه، که برای هر دامنه قابل تغییر است. درخواست‌های بیش از سقف پیش از رسیدن به سرور شما رد می‌شوند. برای حفاظت در برابر حمله‌های وب، فایروال وب و محافظ ربات را هم ببینید.
هزینهٔ شتاب‌دهندهٔ API چطور حساب می‌شود؟
هزینهٔ ثابت ماهانه ندارد. مثل بقیهٔ CDN، ترافیک خروجی رایگان است و فقط درخواست‌های بیش از ۱ میلیارد در ماه و ترافیک ورودی بیش از ۱۰ گیگابایت در ماه محاسبه می‌شوند. نرخ‌ها در بخش هزینه آمده است.
آیا کش پاسخ فقط روی مسیر /api اعمال می‌شود؟
خیر. کش پاسخ برای کل دامنه روشن می‌شود و روی هر درخواست GET که سرور شما اجازهٔ کش آن را بدهد اثر دارد. به همین دلیل بهتر است API را روی زیردامنهٔ جدا مثل api.example.com قرار دهید تا رفتار کش آن از سایت اصلی مستقل باشد.
وقتی محدودیت نرخ فعال می‌شود، کلاینت چه پاسخی می‌گیرد؟
درخواست‌های بیش از سقف با کد ۴۲۹ رد می‌شوند و به سرور شما نمی‌رسند. سقف بر اساس IP بازدیدکننده سنجیده می‌شود؛ اگر کلاینت‌های زیادی پشت یک IP مشترک دارید، مثل شبکهٔ یک سازمان، سقف را بالاتر تنظیم کنید.
می‌توانم API را فقط برای IP‌های مشخص باز بگذارم؟
بله. در فهرست «اجازهٔ دسترسی فقط به IP‌های مشخص» آدرس‌ها یا رنج‌های CIDR سرورهای شریک را وارد کنید؛ بقیهٔ درخواست‌ها در لبه با کد ۴۰۳ رد می‌شوند. فهرست مسدودی IP هم برای رد کردن آدرس‌های مزاحم وجود دارد.
اگر سرور اصلی کند پاسخ دهد چه می‌شود؟
مهلت پاسخ مبدأ را می‌توانید بین ۱ تا ۳۰۰ ثانیه تعیین کنید. برای endpoint‌هایی که گزارش سنگین تولید می‌کنند مهلت بلندتر و برای API‌های سبک مهلت کوتاه‌تر مناسب است تا کلاینت بی‌دلیل منتظر نماند.
آیا تنظیمات را می‌توانم با API خود ایران‌کلاد تغییر دهم؟
بله. مسیر PATCH /api/v1/edge/records/{id}/settings کش پاسخ، محدودیت نرخ، CORS‏، HSTS، فهرست‌های IP، هدر Host و مهلت مبدأ را تغییر می‌دهد و GET /api/v1/edge/records تنظیمات فعلی را برمی‌گرداند. این کار را می‌توانید در pipeline استقرار خود خودکار کنید.
آیا فایروال وب روی آپلود فایل از طریق API اثر دارد؟
اگر فایروال وب را روشن کنید، بدنهٔ درخواست بازرسی می‌شود و سقف حجم بدنه حدود ۱۲٫۵ مگابایت است. اگر API شما فایل بزرگ‌تر دریافت می‌کند، برای آن زیردامنه فایروال وب را خاموش بگذارید یا آپلود را مستقیم به فضای ذخیره‌سازی ابری بفرستید.

پاسخ پرسش خود را پیدا نکردید؟ با پشتیبانی در تماس باشید.

API سریع‌تر و سبک‌تر با کش پاسخ روی لبه

کش پاسخ، محدودیت نرخ، CORS و SSL هزینهٔ جداگانه ندارند؛ فقط مصرف بیش از سهمیهٔ رایگان هر ماه از کیف پول کسر می‌شود.