پرش به مطلب اصلی

تنظیمات Caching

به ذخیره‌ی اسناد و اطلاعات وب به‌شکل موقت و برای کاهش تاخیر و افزایش بازدهی، Caching گفته می‌شود. در شبکه‌ توزیع محتوا یا CDN ابر آروان اگر قابلیت Caching روی دامنه فعال باشد، برای دسترسی سریع‌تر و بازدهی بیش‌تر، هم‌چنین اطمینان بالاتر (High Availability)، اطلاعات وب‌سایت‌ها در نقاط و لایه‌های مختلف ذخیره (Cache) می‌شود.

عملکرد Cache صفحات

در این روش یک کپی از منابع وب‌سایت روی سرورهای لبه ذخیره می‌شوند. هنگامی‌که کاربر نشانی وب‌سایتی را در مرورگر خود وارد می‌کند، به هنگام استفاده‌ی آن وب‌سایت از خدمات CDN، درخواست مرورگر برای نزدیک‌ترین سرور CDN ارسال می‌شود. این سرور با دریافت این درخواست، به‌دنبال منابع درخواست شده در ‌Cache خود می‌گردد. اگر منبع درخواستی را در Cache خود پیدا کند و آن منبع هم‌چنان معتبر باشد (یا به عبارت بهتر، منقضی نشده باشد) بی‌درنگ آن را برای مرورگر می‌فرستد. اما اگر آن منبع را در Cache خود نداشته باشد یا آن را منقضی بیابد، درخواستی را برای دریافت آن منبع برای سرور اصلی میزبان سایت ارسال می‌کند و پس از دریافت منابع از سرور اصلی، ضمن ذخیره‌ی آن برای خود، آن را برای مرورگر کاربر نیز می‌فرستد.

باید توجه داشت که همه‌ی اطلاعات وب ذخیره‌شدنی در Cache نیستند و برخی درخواست‌ها می‌بایست دایم به سرور اصلی ارسال شوند. معمولن اطلاعات ایستا (Static) مثل ‌تصاویر، فایل‌های js و css و مانند آن در Cache ذخیره می‌شوند. به اطلاعاتی که از Cache پاسخ داده شود، Hit گفته می‌شود و اگر در Cache موجود نباشد و برای دریافت آن به سرور اصلی مراجعه شود، به آن Miss گفته می‌شود.

برای بررسی Miss یا Hit بودن محتوا کافی است Response Headerای به نام ar-cache را بررسی کنیم. برای بررسی Response Headerها می‌توانید در مرورگر Chrome از منوی تنظیمات روی گزینه‌ی More Tools و سپس گزینه‌ی Developer Tools کلیک کنید.

تفاوت Cache صفحات در CDN و Cache مرورگر

برخلاف Cache مرورگر (Browser Caching) که تنها می‌توان کنترلی محدود بر چگونگی ذخیره‌ی منابع، نوع و مدت این ذخیره در مرورگر کاربر داشت، در Proxy Caching، چون مدیر وب‌سایت خود می‌تواند مشخص‌کننده‌ی دقیق این منابع و چگونگی ذخیره‌ی آن‌ها روی سرورهای CDN باشد، نظارت و کنترل بر این سیاست‌ها بسیار بیش‌تر خواهد بود.

از سوی دیگر با Proxy caching، میان کاربری با نخستین ارجاع به وب‌سایت (یا کاربری که Cache مرورگر خود را پاک کرده است) با کاربری که برای چندمین‌بار از وب‌سایت بازدید می‌کند، تفاوتی نیست. سرور لبه در هر دو حالت در سریع‌ترین حالت ممکن، منبع را در اختیار کاربر قرار می‌دهد.

برای بررسی تنظیمات قابلیت Caching سرویس CDN ابر آروان، باید وارد بخش «تنظیمات Caching» از منوی شبکه توزیع محتوا شوید. در صفحه‌ی باز شده امکان بررسی و تغییر سطح عملیات Cache، مدت زمان اعتبار اطلاعات Cache شده، حذف اطلاعات Cache شده، دسترسی همیشگی و وضعیت برنامه‌نویسی برای شما فراهم خواهد بود.

در این راهنما به بررسی قابلیت‌های Caching ابر آروان می‌پردازیم.

سطح عملیات Cache

در ابر آروان این امکان را دارید تا سطوح متفاوتی را برای Cache وب‌سایت‌تان فعال کنید.

  • خاموش: در این حالت هیچ اطلاعاتی Cache نخواهد شد و تمام درخواست‌ها به سرور اصلی ارسال خواهند شد.

  • بدون Query String: در این حالت از Query String موجود در URL چشم‌پوشی خواهد شد و به همه‌ی درخواست‌هایی که به یک نشانی URL ولی با Query Stringهای مختلف ارسال می‌شوند، محتوای یکسانی از Cache پاسخ داده خواهد شد.

    برای نمونه اگر درخواست:

پیش‌تر به CDN ارسال شده و در cache ذخیره شده باشد، درخواست:

نیز از Cache پاسخ داده خواهد شد (Hit خواهد بود).

  • با Query String:در این حالت برعکس حالت قبل، تمامی Query Stringها در نظر گرفته خواهد شد و دو درخواست به یک URL ولی Query String متفاوت به‌شکل دو محتوای متفاوت در Cache ذخیره خواهند شد. بنابراین اگر همان دو درخواست قسمت قبل را در نظر بگیریم هر دو Miss خواهد بود.

برای مدیریت سطح عملیات Cache با استفاده از API می‌توانید از نمونه درخواست‌های زیر کمک بگیرید:

خاموش کردن Cache:

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY' \
--header 'content-type: application/json' \
--data '{"cache_status":"off"}'

فعال‌سازی سطح بدون Query String:

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"cache_status":"uri"}'

فعال‌سازی سطح با Query String:

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"cache_status":"query_string"}'

در شبکه توزیع محتوا آروان بیش‌ترین اندازه‌ی قابل کش برای هر فایل به‌طور پیش‌فرض ۱۰۴۸۵۷۶۰۰ بایت است. اگر دامنه‌ای با پلن سازمانی دارید می‌توانید برای افزایش این مقدار درخواست‌تان را از طریق تیکت به تیم پشتیبانی ابر آروان ارسال کنید.

حذف اطلاعات Cache شده

گاهی نیاز است دیتای موجود در Cache حذف شود. این کار به دو روش در پنل آروان انجام می‌شود که در ادامه به آن‌ها می‌پردازیم.

  • پاک کردن گزینشی: اگر مایلید برخی فایل‌های خاص از Cache پاک شود، با کلیک روی این گزینه می‌توانید نشانی URL آن‌ها را وارد و آن‌ها را به‌شکل گزینشی پاک کنید.

    برای استفاده از این قابلیت با API می‌توانید از درخواست زیر کمک بگیرید:

    curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching/purge' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'content-type: application/json' \
    --data '{"purge":"individual","purge_urls":["http://example.com/purge"]}'

    در این درخواست کش مسیر http://example.com/purge حذف می‌شود.

  • پاک کردن همه چیز: با کلیک روی این گزینه می‌توانید تمامی دیتای موجود در Cache را به‌ازای هر یک از دامنه‌ها پاک کنید.

    برای پاک کردن کش کلی دامنه با API، از نمونه درخواست زیر استفاده کنید:

    curl --location 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching/purge' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'content-type: application/json' \
    --data '{"purge":"all"}'

مدت زمان اعتبار اطلاعات Cache شده

در این بخش، امکان تنظیم مدت زمان موردنظر برای سطوح مختلف Caching وجود دارد که در ادامه آن‌ها را توضیح می‌دهیم.

  • مدت زمان اعتبار اطلاعات Cache شده: مدت زمانی است که اطلاعات ذخیره شده در Cache باقی خواهد ماند. پس از گذشت این مدت زمان، اطلاعات از cache پاک شده و از سرور اصلی دریافت می‌شود.

    برای تغییر این مقدار با API می‌توانید از نمونه درخواست زیر استفاده کنید:

    curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'content-type: application/json' \
    --data '{"cache_page_200":"1m"}'
  • **مدت زمان Cache صفحات خطا **: مدت زمان Cache شدن صفحاتی با Status Codeهای به جز 200 روی سرورهای لبه CDN است.

    برای تغییر این مقدار با API می‌توانید از نمونه درخواست زیر استفاده کنید:

    curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'cache-control: no-cache' \
    --header 'content-type: application/json' \
    --data '{"cache_page_any":"3m"}'
  • مدت زمان Cache اطلاعات در مرورگر: مدت زمانی که مرورگر مجاز است اطلاعات را ذخیره (Cache) کند.

    برای تغییر این مقدار با API می‌توانید از نمونه درخواست زیر استفاده کنید:

    curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
    --header 'authority: napi.arvancloud.ir' \
    --header 'accept: application/json, text/plain, */*' \
    --header 'authorization: API KEY 1 2 3 4' \
    --header 'content-type: application/json' \
    --data '{"cache_browser":"1m"}'

اگر این گزینه خاموش باشد پاسخ‌هایی از سرور که دارای Set-Cookie Header هستند Cache نخواهند شد و اگر این گزینه روشن باشد این صفحات Cache خواهند شد.

تنظیم این قابلیت در پلن‌های رشد، حرفه‌ای و سازمانی امکان‌پذیر است.

برای تغییر این مقدار با API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"cache_ignore_sc":true}'

در این درخواست کلید cache_ignore_sc دو مقدار true و false را می‌پذیرد.

وضعیت برنامه‌نویسی

گاهی نیاز است به‌شکل موقت برای بررسی تغییرات روی وب‌سایت هنگام برنامه‌نویسی، Caching به‌شکل کامل غیرفعال شود.

با روشن کردن این گزینه می‌توانید به‌شکل موقت Caching را غیرفعال کنید. البته دیتایی که از قبل Cache شده است، باقی خواهد ماند و حذف نخواهد شد. پس از خاموش کردن این گزینه، درخواست‌ها دوباره از Cache پاسخ داده خواهند شد.

برای تغییر این ویژگی با API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--header 'origin: https://panel.arvancloud.ir' \
--data '{"cache_developer_mode":true}'

در این درخواست کلید cache_developer_mode دو مقدار true و false را می‌پذیرد.

دسترسی همیشگی

با روشن بودن این گزینه، CDN آروان می‌تواند در موقعیتی که وب‌سایت شما از دسترس خارج می‌شود با دیتای موجود در Cache، درخواست کاربران را پاسخ دهد.

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

برای تغییر این ویژگی با API می‌توانید از نمونه درخواست زیر استفاده کنید:

curl --location --request PATCH 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/caching' \
--header 'authority: napi.arvancloud.ir' \
--header 'accept: application/json, text/plain, */*' \
--header 'authorization: API KEY 1 2 3 4' \
--header 'content-type: application/json' \
--data '{"cache_consistent_uptime":false}'

در این درخواست کلید cache_consistent_uptime دو مقدار true و false را می‌پذیرد.

پسوندهای پیش‌فرض ‏Cache‏ شدنی در ‏CDN‏ ابر آروان

هنگامی‌که CDN ابر آروان را برای سایت خود فعال می‌کنید، اگر در پنل کاربری ابر آروان از بخش «قوانین صفحات»، منوی «شبکه‌ی توزیع محتوا (CDN)»، قانونی را برای وب‌سایت خود تعریف نکنید، گروهی از فایل‌ها به‌شکل خودکار و بر اساس قانون پیش‌فرض در سرورهای لبه ابر آروان ذخیره می‌شوند و نیازی به هیچ تنظیمات اضافه‌ای برای Cache شدن آن‌ها نیست. این پسوند‌ها عبارت‌اند از:

7ZCSVGIFMIDIPNGTIFZIP
AVIDOCGZMKVPPTTIFFZST
AVIFDOCXICOMP3PPTXTTF
APKDMGISOMP4PSWEBM
BINEJSJAROGGRARWEBP
BMPEOTJPGOTFSVGWOFF
BZ2EPSJPEGPDFSVGZWOFF2
CLASSEXEJSPICTSWFXLS
CSSFLACMIDPLSTARXLSX