در این صفحه، تنظیمات کش در قانون مسیر را بررسی میکنیم: فعال بودن کش، نحوه مدیریت Query String و TTL، تفکیک نسخه بر اساس دستگاه و کشور و سایر گزینههای مرتبط.
برای فعالسازی و پیکربندی کش، پیکربندی کش محتوا را دنبال میکنیم. نحوه عملکرد HIT، MISS و BYPASS در مکانیزم کش در CDN ستون چگونه کار میکند؟ توضیح داده شده است.
کش برای هر قانون مسیر بهصورت جداگانه تنظیم میشود و در حالت پیشفرض Bypass است.
لبه فقط پاسخهایی را در کش ذخیره میکند که Content-Type آنها در انواع محتوای قابلکش قرار داشته باشد.
تنظیمات اصلی
| گزینه | مقدار | پیشفرض | توضیح |
|---|---|---|---|
| کش فعال است | فعال / غیرفعال | غیرفعال | مشخص میکند پاسخهای قابلکش در لبه ذخیره شوند یا خیر. |
| در نظر گرفتن Query String | فعال / غیرفعال | غیرفعال | مشخص میکند Query String در نسخه کش در نظر گرفته شود یا خیر. |
| نحوه مدیریت کش را انتخاب کنید | هدر Cache-Control / مدیریت دستی | هدر Cache-Control | نحوه تعیین مدت نگهداری پاسخ در کش لبه و مرورگر را مشخص میکند. |
| دادهها بر اساس نوع “دستگاه” کاربر کش شوند | فعال / غیرفعال | غیرفعال | برای موبایل، تبلت و کامپیوتر نسخههای جداگانه ایجاد میکند. |
| دادهها بر اساس “کشور” کاربر کش شوند | فعال / غیرفعال | غیرفعال | برای کشورهای مختلف نسخههای جداگانه ایجاد میکند. |
| عدم ارایه محتوای منقضیشده هنگام بهروزرسانی کش | فعال / غیرفعال | غیرفعال | مشخص میکند هنگام بهروزرسانی کش، نسخه منقضی به کاربر ارایه شود یا خیر. |
پیشفرض Bypass
فعال بودن دکمه ابر بهتنهایی کش را فعال نمیکند. تا زمانی که کش در قانون مسیر فعال نشده باشد، پاسخ در لبه ذخیره نمیشود.
وضعیت کش هر درخواست را میتوانیم در هدر x-zrk-cs و فیلد cache_status لاگ درخواست مشاهده کنیم. توضیحات این مقادیر در هدرهای HTTP اختصاصی ستون آمده است.
فعال بودن کش
وقتی کش فعال است، پاسخهای قابلکش پس از دریافت از آپاستریم میتوانند در لبه ذخیره شوند و درخواستهای بعدی از کش پاسخ بگیرند.
اگر کش غیرفعال باشد، پاسخ از کش ارایه نمیشود و درخواست برای دریافت پاسخ به آپاستریم ارسال میشود.
تنظیمات پروتکل
در قانون مسیر میتوانیم تنظیمات پروتکل را اضافه کنیم. یکی از این دو را انتخاب میکنیم:
| گزینه | معنی |
|---|---|
| HTTP | پروکسی HTTP؛ کش و بقیه تنظیمات مسیر قابل استفادهاند |
| gRPC | پروکسی gRPC |
gRPC و کش
با انتخاب پروتکل gRPC، قابلیت تنظیمات Cache قابل استفاده نخواهد بود.
Query String
گزینه در نظر گرفتن Query String مشخص میکند پارامترهای URL در نسخه کش در نظر گرفته شوند یا خیر.
| وضعیت | رفتار |
|---|---|
| فعال | Query String در نسخه کش در نظر گرفته میشود و هر ترکیب متفاوت از پارامترها میتواند نسخه جداگانهای داشته باشد. |
| غیرفعال | Query String در نسخه کش در نظر گرفته نمیشود و URLهایی با Query String متفاوت از یک نسخه کش استفاده میکنند. |
برای مثال، اگر این گزینه فعال باشد، file.js?v=1 و file.js?v=2 دو نسخه جداگانه خواهند داشت. اگر غیرفعال باشد، هر دو URL از یک نسخه کش استفاده میکنند.
نحوه مدیریت کش
مدت نگهداری پاسخ در کش را میتوانیم با استفاده از هدر Cache-Control پاسخ آپاستریم یا با تعیین TTL بهصورت دستی مشخص کنیم.
| گزینه | رفتار |
|---|---|
استفاده از هدر Cache-Control | مدت نگهداری پاسخ بر اساس مقادیر Cache-Control پاسخ آپاستریم تعیین میشود. |
| مدیریت دستی کش | مدت نگهداری پاسخ با TTLهایی که در همین قانون مسیر مشخص میکنیم تعیین میشود. |
هدرهای Cache-Control
در حالت استفاده از هدر
Cache-Control، لبه مدت کش شدن پاسخ را از هدرCache-Controlپاسخ آپاستریم تعیین میکند. مقادیری مانندno-store،privateوno-cacheمانع کش شدن پاسخ میشوند.
مدیریت دستی کش
این گزینهها فقط در حالت مدیریت دستی کش اعمال میشوند. واحد تمام TTLها ثانیه است.
| گزینه | مقدار | پیشفرض | توضیح |
|---|---|---|---|
| Browser TTL | عدد بزرگتر یا مساوی 0 | 3600 | مدت اعتبار پاسخ در کش مرورگر یا کلاینت. |
| Edge TTL | عدد بزرگتر یا مساوی 1 | 3600 | مدت نگهداری پاسخ در کش لبه CDN. |
| Non-success TTL | عدد بزرگتر یا مساوی 0 | 0 | مدت نگهداری پاسخهای 4xx آپاستریم در کش. مقدار 0 یعنی این پاسخها کش نمیشوند. |
| Stale TTL | عدد بزرگتر یا مساوی 0 | 0 | مدت زمانی که پس از پایان Edge TTL میتوان نسخه منقضی را ارایه کرد. مقدار 0 یعنی نسخه منقضی ارایه نمیشود. |
حذف خودکار محتوای کش بدون استفاده
جدا از Edge TTL، اگر برای یک محتوا کششده تا ۲۴ ساعت درخواستی دریافت نشود، آن محتوا از کش لبه حذف میشود؛ حتی اگر Edge TTL آن هنوز منقضی نشده باشد.
حالت Immutable
حالت Immutable مشخص میکند مرورگر در طول اعتبار Browser TTL، برای بررسی تغییر محتوا درخواست اعتبارسنجی ارسال کند یا خیر.
| گزینه | مقدار | پیشفرض |
|---|---|---|
| حالت Immutable | فعال / غیرفعال | غیرفعال |
اگر حالت Immutable فعال باشد، مرورگر تا پایان Browser TTL برای همان محتوا درخواست اعتبارسنجی مجدد ارسال نمیکند.
محتوای قدیمی در مرورگر
با فعال بودن Immutable، تغییر محتوای آپاستریم تا پایان Browser TTL به کلاینتی که نسخه قبلی را در کش دارد نمیرسد. Purge کش لبه نیز کش مرورگر را پاک نمیکند؛ بنابراین پس از تغییر محتوا باید Browser TTL تمام شود یا کش کلاینت پاک شود.
ذخیره فقط در مرورگر
با فعال کردن دادهها روی سرور CDN کش نمیشوند و فقط در مرورگر کاربر ذخیره میشوند، پاسخ در کش لبه ذخیره نمیشود و فقط با استفاده از Browser TTL در کلاینت نگهداری میشود.
| گزینه | مقدار | پیشفرض |
|---|---|---|
| دادهها روی سرور CDN کش نمیشوند و فقط در مرورگر کاربر ذخیره میشوند | فعال / غیرفعال | غیرفعال |
تفکیک بر اساس دستگاه
با فعال کردن دادهها بر اساس نوع دستگاه کاربر کش شوند، برای سه گروه موبایل، تبلت و کامپیوتر نسخههای جداگانهای از یک URL در کش ایجاد میشود.
| گزینه | مقدار | پیشفرض |
|---|---|---|
| دادهها بر اساس نوع “دستگاه” کاربر کش شوند | فعال / غیرفعال | غیرفعال |
برای مثال، اگر پاسخ یک فایل برای موبایل و کامپیوتر متفاوت باشد، میتوانیم این گزینه را فعال کنیم تا هر گروه نسخه متناسب با خود را دریافت کند.
تفکیک بر اساس کشور
با فعال کردن دادهها بر اساس کشور کاربر کش شوند، یک URL میتواند برای کشورهای مختلف نسخههای جداگانهای در کش داشته باشد.
| گزینه | مقدار | پیشفرض |
|---|---|---|
| دادهها بر اساس “کشور” کاربر کش شوند | فعال / غیرفعال | غیرفعال |
این گزینه زمانی کاربرد دارد که محتوای پاسخ بر اساس کشور کاربر تغییر کند. اگر پاسخ برای همه کشورها یکسان است، فعال کردن آن تعداد نسخههای کش را افزایش میدهد بدون اینکه محتوای متفاوتی ایجاد کند.
عدم ارایه محتوای منقضیشده هنگام بهروزرسانی کش
این گزینه مشخص میکند هنگام تازهسازی یک نسخه کش، آیا نسخه منقضی موجود میتواند تا آماده شدن نسخه جدید به کلاینت ارایه شود یا خیر.
| گزینه | مقدار | پیشفرض |
|---|---|---|
| عدم ارایه محتوای منقضیشده هنگام بهروزرسانی کش | فعال / غیرفعال | غیرفعال |
اگر فعال باشد، نسخه منقضیشده هنگام بهروزرسانی کش به کلاینت ارایه نمیشود و پاسخ جدید پس از آماده شدن نسخه تازه ارسال میشود.
اگر غیرفعال باشد، ممکن است در زمان بهروزرسانی، نسخه موجود و منقضیشده تا آماده شدن نسخه جدید ارایه شود.
کلید کش
نسخههای کش بر اساس URL درخواست و گزینههای تفکیک فعالشده از یکدیگر متمایز میشوند.
| جز | چه زمانی در تفکیک نسخه در نظر گرفته میشود؟ |
|---|---|
| Host و مسیر | همیشه |
| Query String | وقتی در نظر گرفتن Query String فعال باشد |
| نوع دستگاه | وقتی دادهها بر اساس نوع “دستگاه” کاربر کش شوند فعال باشد |
| کشور | وقتی دادهها بر اساس “کشور” کاربر کش شوند فعال باشد |
فقط در صورت تفاوت واقعی پاسخ تفکیک میکنیم
هر عامل تفکیک تعداد نسخههای کش را افزایش میدهد و میتواند نرخ HIT را کاهش دهد. تفکیک را فقط زمانی فعال میکنیم که پاسخ برای آن عامل واقعا متفاوت باشد.
انواع محتوای قابلکش
پاسخ فقط زمانی در کش ذخیره میشود که Content-Type آن در فهرست انواع محتوای قابلکش قرار داشته باشد.
نوع محتوا از هدر Content-Type پاسخ آپاستریم تشخیص داده میشود، نه از پسوند URL.
محدودیتها
| مورد | محدودیت |
|---|---|
| دامنه تنظیمات | هر قانون مسیر بهصورت جداگانه |
| Browser TTL | حداقل 0 ثانیه |
| Edge TTL | حداقل 1 ثانیه |
| Non-success TTL | حداقل 0 ثانیه |
| Stale TTL | حداقل 0 ثانیه |
| حذف نسخه بدون درخواست | پس از حداکثر ۲۴ ساعت از آخرین درخواست همان نسخه |
| انواع محتوای قابل ذخیره | فقط Content-Typeهای موجود در انواع محتوای قابلکش |
