قوانین مسیرها و تنظیم نحوه رفتار cache

پس از ساخت آپ‌استریم، لازم است تا قوانین مسیر و همچنین نحوه‌ی رفتار cache را تنظیم کنید. پیکربندی CDN ستون به شما این امکان را می‌دهد که تنظیمات مختلفی (مثل نحوه Caching، پشتیبانی از CORS و …) را بر روی مسیرهای دلخواه خود لحاظ کنید. در حالت پیش‌فرض CDN شما تنها یک قانون مسیر برای */ دارد و تمامی درخواست‌ها با این مسیر تطبیق می‌یابند و بر اساس تنظیمات آن پاسخ داده می‌شوند. شما می‌توانید مسیرهای جدیدی تعریف کنید. مثلا می‌توانید مسیر */pictures/ را ایجاد کنید و در آن تنظیمات Cache را متفاوت با آن‌چه در مسیر پیش‌فرض است تغییر دهید.

برای تنظیم رفتار کش به تب مربوط به لوکیشن‌ها بروید.

locations.PNG

در این مرحله، تعیین می‌کنید که چه مسیرهایی با چه شرایطی کش شوند و یا درخواست‌های چه مسیرهایی به سرور مبدا هدایت شوند. توجه داشته باشید که به‌ ازای هر مسیر دلخواه می‌توان یک لوکیشن تعریف کرد و در هر لوکیشن می‌توان تنظیمات جداگانه‌ی مربوط به هر مسیر را لحاظ کرد. برای این کار بر روی گزینه‌ی افزودن لوکیشن کلیک کنید. با این کار پنجره‌ی زیر برای شما باز خواهد شد.

location

در فیلد اول می‌توانید نام هاست خود را تعریف کنید. با تعریف هاست می‌توانید تعیین کنید که این قانون مسیر فقط برای یک زیردامنه‌ی خاص فعال باشد و یا برای همه‌ی هاست‌های مرتبط با دامنه استفاده شود. این فیلد یک مقدار GLOB به عنوان ورودی می‌گیرد. اگر مقدار این فیلد را خالی بگذارید با همه‌ی هاست‌های مرتبط با دامنه مطابق می‌شود.
برای مثال اگر مقدار این فیلد برابر با *.yourdomain.ir باشد، قانون مسیر برای همه زیردامنه‌های اول دامنه‌ی yourdomain.ir فعال می‌شود.
در فیلد دوم مسیر مورد نظر خود را وارد نمایید. هر لوکیشن علاوه‌بر مسیر مشخص، باید از یکی از آپ‌استریم‌های تعریف شده استفاده کند. پس در فیلد بعدی آپ‌استریم مورد نظر خود را انتخاب کنید. پیکربندی CDN ستون به شما این امکان را می‌دهد که تنظیمات مختلفی مثل نحوه‌ی Caching، پشتیبانی از CORS و… را بر روی مسیرهای دلخواه خود لحاظ کنید.  تمامی درخواست‌ها با این مسیر تطبیق می‌یابند و بر اساس تنظیمات آن پاسخ داده می‌شوند.

قوانین مسیر
مسیر توضیح مثال
/* همه درخواست‌ها با این مسیر تطابق پیدا می‌کنند. اگر این مسیر اولین قانون باشد، قوانین بعدی بررسی نمی‌شوند. همه درخواست‌ها
/pictures/* درخواست‌هایی که با/pictures/ شروع شده باشند با این مسیر تطبیق می‌یابند. /pictures/path/to/image.gif
/pictures/*.{png,jpg} درخواست‌هایی که با /pictures/ شروع می‌شوند و با یکی از پسوندهای png. یا jpg. به اتمام می‌رسند. /pictures/path/to/photo.png

پس از وارد کردن مسیر مورد نظر، می‌توانید به تب مربوط به cache رفته و رفتار cache را پیکربندی کنید.

ابتدا برای هرمسیر باید «نوع کش» مشخص شود، «نوع کش» در اینجا تعیین‌کننده‌ی رفتار کش است. در این قسمت می‌توانید یکی از سه سطح «استاندارد»، «Bypass» و یا «نادیده گرفتن Query String» را انتخاب کنید. نوع پیش‌فرض، «استاندارد» است.

ابتدا لازم است که با مفهوم «Query String» آشنا شوید.

یک Query String قسمتی از یک URL است، که مقادیر را به پارامترها اختصاص می‌دهد. Query String معمولا شامل فیلدهایی است که به یک URL پایه اضافه می‌شود. برای مثال در URL زیر، Query String به‌صورت Bold مشخص شده است.

http://example.com/over/there?name=ferret

همانطور که قبلا نیز گفته شد برای هر مسیر باید نوع کش مشخص شود. نوع کش در واقع تعیین‌کننده‌ی رفتار کش است. در پیکربندی CDN ستون شما می‌توانید از بین سه نوع کش که در نظر گرفته شده است انتخاب کنید. در ادامه به تعریف هریک از این سه نوع می‌پردازیم.

استاندارد (Standard): در این حالت، لینک با در نظر گرفتن قسمت Query String کش می‌شود. به این معنی است که دو لینک زیر با یکدیگر متفاوت در نظر گرفته شده و جداگانه کش خواهند شد.

http://example.com/over/there

http://example.com/over/there?name=ferret

نادیده گرفتن Query String: مانند حالت قبل با این تفاوت که Query String در کش کردن لینک لحاظ نمی‌شود. به این معنی که دو لینک زیر با یکدیگر متفاوت نبوده و در ریکوئست‌های حاوی دو URL زیر Query String نادیده گرفته می‌شود.

http://example.com/over/there

http://example.com/over/there?name=ferret

Bypass: در این حالت لینک‌های مربوط به این Location در کش ذخیره نمی‌شود و مستقیما به سرور مبدا مرتبط هدایت می‌شوند.

در قسمت بعدی لازم است تا تنظیمات مربوط به Upstream TTL را پیکربندی کنید.

برای تنظیم کش، در صورتی که گزینه‌ی «نادیده گرفتن Upstream TTL» را فعال کرده باشید، می‌توانید تنظیمات را در پنل ستون پیکربندی کنید. درغیر این صورت تنظیمات کش از روی هدر Cache-Control که در پاسخ سرور اصلی شما قرار دارد، اعمال می‌شود. در این قسمت می‌توانید موارد زیر را تنظیم کنید:

ویژگی immutable: در صورت فعال بودن این ویژگی، پاسخ ارسال شده دیگر تغییری نخواهد کرد. یعنی اگر اطلاعات روی سرور مبدا منقضی نشده باشند، سرور همان پاسخ قبلی را بدون تغییر نمایش می دهد. پس حتی اگر کاربران، صفحه را به‌روزرسانی کنند دیگر نیازی به ارسال درخواست برای کنترل تغییرات یا به‌روزرسانی‌ها از سمت کلاینت وجود ندارد. با فعال کردن این گزینه می‌توانید ویژگی immutabale را به هدر cache-control اضافه کنید. این ویژگی به طور پیش‌فرض غیرفعال است. در صورت نیاز به فعال‌سازی آن باید این گزینه را انتخاب کنید.

مدت زمان کش در کلاینت یا Browser TTL: این عدد مقدار زمانی که درخواست در سمت مرورگر (و یا هر کلاینت دیگری) باید کش شود را برحسب دقیقه مشخص می‌کند.

مدت زمان کش در سرور CDN یا EdgeTTL: این عدد مقدار زمانی که درخواست در سرورهای CDN ابر کافه‌بازار ذخیره می‌شود را برحسب دقیقه، مشخص می‌کند.

مدت زمان کش درخواست‌های ناموفق یا Non-Success TTL: این عدد تعداد دقایقی که می‌توان درخواست‌هایی که منجر به پاسخ 4xx از سرور اصلی شده‌اند، کش کرد را مشخص می‌کند.

مدت زمان کش درخواست‌های منقضی شده یا Stale TTL: این عدد تعداد دقایقی را که می‌توان پس از منقضی شدن کش، کماکان  پاسخ‌های منقضی شده را به کاربر بازگرداند، تنظیم کند.

کش خصوصی یا Private: توجه داشته باشید که در صورت فعال بودن این گزینه، سرور CDN چیزی را کش نمی‌کند، ولی می‌توان BrowserTTL را برای کش کلاینت تنظیم کرد. این مورد برای کش کردن داده‌های مخصوص کاربر استفاده می‌شود.

location adding

کاربرد CORS در مرورگرهای مدرن و برای بررسی اجازه‌ی دسترسی از راه دور، به منابع و سرویس‌های تحت وب است. برای مثال در حالت عادی امکان استفاده از فایل‌های فونت از روی یک سرور دیگر وجود ندارد، یا امکان ارسال یک درخواست AJAX از روی دامنه‌ای غیر از دامنه‌ی فعلی ناممکن است. CORS روشی برای حذف این محدودیت‌ها را در اختیار قرار می‌دهد.

به زبان ساده‌تر، ویژگی CORS یا Cross-Origin Resource Sharing  این امکان را فراهم می‌کند تا دامنه‌ها درخواست خود را برای یک منبع به یک دامنه دیگر بفرستند. برای مثال سایت A.com می‌خواهد تصویری را از سایت B.com نمایش دهد. در حالت معمول مرورگر جلوی نمایش این تصویر را می‌گیرد، مگر اینکه سایت B.com در پاسخ خود به طور مشخص به سایت A.com اجازه دسترسی به تصویر درخواستی را داده باشد. موارد قابل تنظیم این بخش عبارتند از:

در حال حاضر هر دو نوع درخواست‌های Simple و Preflighted پشتیبانی می‌شوند.

همه‌ی موارد ذکر شده در بالا را می‌توانید در تب مربوط به CORS تنظیم کنید.

نکته: مورد Allow Origins می‌تواند به صورت الگوی glob باشد که در این صورت هدر Origin درخواست، با این الگوها آزموده شده و در صورت انطباق، خود هدر Origin در هدر پاسخ Access-Control-Allow-Origin قرار می‌گیرد.

توجه: یک فیلد جدید به اطلاعات پایه لوکیشن اضافه شده است و کاربر می‌تواند مقدار host را با فرمت glob و حداکثر ۲۵۳ کاراکتر تعیین کند. به‌صورت پیش‌فرض مقدار این فیلد خالی‌ست. این فیلد برای زمانی کاربرد دارد که کاربر بخواهد لوکیشن مربوطه، فقط مثلا برای یک subdomain خاص اعمال شود.

cors configuration.PNG

در تنظیمات لوکیشن، امکانی با نام بازنویسی وجود دارد. با استفاده از این امکان می‌توانید یک پیشوند مشخص را به یک مسیر دیگر در سرورهای اصلی بازنویسی کنید. مثلا می‌توانید مسیرهای که با pictures/ مشخص می‌شوند را به / در سرور اصلی بازنویسی کنید.

rewrite.PNG

قسمت بعدی در پنجره‌ی «افزودن لوکیشن»، مربوط به تنظیمات اضافی مانند «لینک امن» است. با فعال کردن گزینه «لینک امن/Secure Link» می‌توان لینک‌های امن مدت‌دار تولید کرد. توضیحات مربوط به لینک امن را می‌توانید در مستندات مربوط به آن مطالعه کنید.

متدهای مجاز را نیز در همین قسمت می‌توانید انتخاب کنید. متدهای HEAD، GET و OPTIONS به‌صورت پیش‌فرض مجاز هستند.

extra.PNG

در قسمت «هدرهای آپ‌استریم» می‌توانید هدرهای ارسالی به سمت سرورهای آپ‌استریم (Request Headers) را تغییر دهید

همچنین در قسمت "Downstream Headers" می‌توانید هدرهای ارسالی در پاسخ به کاربر (Response Headers) را تغییر دهید.
برای ویرایش مقدار یک هدر یا اضافه کردن یک هدر جدید بر روی دکمه «افزودن» کلیک کنید، سپس نام هدر و مقدار مورد نظر را برای آن هدر در فیلدهای مربوطه وارد کنید.
برای حذف یک هدر بر روی دکمه «افزودن» کلیک کنید. نام هدر را در فیلد مربوطه وارد کنید اما مقدار هدر را خالی بگذارید. با این کار هدر از درخواست ارسالی به Upstream یا پاسخ ارسالی به کاربر حذف می‌شود.
توجه: نام هدرها به بزرگی و کوچکی حروف حساس نیست. (case-insensitive)

در حال حاضر امکان حذف یا ویرایش هدرهای زیر وجود ندارد:

  • Upstream Headers: Connection, CDN-Loop
  • Downstream Headers: Connection, CDN-Loop, Date
  • توجه: این لیست ممکن است در آینده تغییر کند.
    برخی هدرهایی که توسط CDN ستون به سمت کاربر ارسال می‌شود:
    - x-zrk-us
    برای نمایش کد پاسخ سرور آپ‌استریم
    - x-zrk-sn
    نام سرور لبه که پاسخ کاربر را داده است
    - x-zrk-cs
    وضعیت پاسخ از کش را مشخص می‌کند و مقادیری مانند HIT, MISS, REVALIDATED, EXPIRED و BYPASS را می‌تواند داشته باشد.
    - server
    همیشه مقدار Sotoon دارد.
    توجه: مقادیر هدر Cache-Control نیز از طریق پنل اوشن قابل تنظیم است.
    برخی هدرهایی که از سمت سرور لبه به سرور آپ‌استریم ارسال می‌شود:
    - CDN-Loop
    این هدر توسط ستون و برای جلوگیری از Loop در سرورهای لبه تنظیم می‌شود.
    - X-Real-IP, X-Forwarded-For
    حاوی IP کلاینت می‌باشد.
    - X-Forwarded-Host
    معادل هدر Host در درخواست کاربر است
    - X-Forwarded-Proto
    معادل scheme در درخواست کاربر است که مثلا می‌تواند http یا https باشد.
    توجه: هدرهای Upgrade و Connection نیز مطابق نیاز ست می‌شوند.

    توجه: این فهرست ممکن است در آینده تغییر کند.

پس از تکمیل این قسمت بر روی دکمه‌ی «افزودن لوکیشن» کلیک کنید. همچنین امکان ویرایش تنظیمات مربوط به «لوکیشن‌ها» نیز فراهم شده است.

آیا این مقاله به شما کمک کرد؟

با نظر دادن به بهبود کیفیت مستندات کمک کنید