مساله
شما سایت خود را پشت کلودگارد قرار داده و مکانیزم کش را فعال کردهاید. اما محتوای (برخی آدرسهای) سایت شما کش نمیشود و از سرور مبدا دریافت میشود.
علت
کش نشدن محتوا میتواند به چند علت باشد که به ترتیب به آنها اشاره میشود:
- Cache Mode: شما مکانیزم Cache را روی سایت خود فعال نکردهاید.
- Developer Mode: مکانیزم Cache سایت شما در وضعیت Developer Mode است. (در این وضعیت هیچ محتوایی کش نمیشود و کلودگارد به قوانین صفحه نیز توجه نمیکند)
- Non-Static Files: به صورت پیشفرض کلودگارد فقط محتوای ایستا را کش میکند. به عبارت دیگر آدرسهایی از سایت شما که یکی از پسوندهای ایستا مانند jpg, js, css و … را داشته باشند کش میشوند. فایلهای html و مانند آن کش نمیشوند. اگر میخواهید کل سایت کش شود میتوانید یک قانون صفحه بسازید که با کل محتوا تطبیق یابد و کش را روی آن فعال کنید. (لیست پسوندهایی که کلودگارد محتوای ایستا فرض میکند)
- Page Rule: شما میتوانید با استفاده از قوانین صفحه کش را برای یک آدرس خاص فعال یا غیرفعال کنید.
- Cache-Control: سرور مبدا شما هدر
Cache-Control
را بر روی یکی از مقادیرprivate
,no-store
,no-cache
و مانند آن تنظیم میکند. این مقادیر به CDN اعلام میکنند که این صفحه نباید کش شود و در نتیجه محتوا در کش ذخیره نخواهد شد. - Expires: سرور مبدا شما هدر
Expires
را در یک تاریخ قدیمی تنظیم میکند. به این ترتیب محتوا به محض دریافت منقضی شده تلقی میشود و کش نمیشود. - Set-Cookie: سرور مبدا شما هدر
Set-Cookie
را در پاسخ ارسال میکند. صفحاتی که در آنها کوکی برای مرورگر تنظیم میشود کش نمیشوند، چرا که محتوای کوکی برای تفکیک کاربران مختلف از یکدیگر به کار رفته و بعضا دارای مقادیر امنیتی مانند کلید نشست (Session Key) و مانند آن هستند. لذا درخواستی که منجر به تنظیم کوکی میشود در CDN کش نمیشود. (دقت کنید که سایر صفحات که کوکی را تغییر نمیدهند کش میشوند و فقط درخواستی که منجر به تغییر کوکی شده کش نمیشود)
عیبیابی
جهت رویت وضعیت کش صفحات خود میتوانید هدر CG-Cache-Status
را بررسی کنید. این هدر یکی از مقادیر زیر را نشان میدهد:
- HIT: صفحه کش شده بوده و برای مرورگر ارسال شده است.
- MISS: صفحه در کش موجود نبوده و از سرور مبدا دریافت شده و اکنون کش است. (در درخواست بعدی باید HIT دریافت کنید، مگر اینکه به علت گذر زمان یا حذف کش منقضی شود)
- EXPIRED: مانند MISS، ولی کش موجود منقضی بوده و به این علت مجددا دریافت شده است.
- UPDATING, STALE: این وضعیت فقط در حالتی که Always On را فعال کرده باشید رخ میدهد. در این حالت کش منقضی شده است اما سرور مبدا پاسخ نداده یا خطا میدهد و به همین علت آخرین محتوای کش (علیرغم انقضا) به کلاینت ارسال شده است.
- خالی: اگر هدر
CG-Cache-Status
وجود ندارد، به این معنی است که برای این صفحه کش فعال نبوده است.
روش بررسی
برای مشاهده هدر CG-Cache-Status
در مرورگر خود باید Developer Tools
(معمولا کلید F12
) را فعال نمایید و به برگه Networks
بروید.
در این صفحه روی هر یک از درخواستها کلیک کرده و موارد زیر را بررسی کنید:
- ابتدا توجه کنید که آدرس URL درخواست مربوط به کلودگارد باشد. (در بارگذاری یک صفحه ممکن است چندین محتوا از چندین سایت و دامنه متفاوت دریافت شود که لزوما تمامی آنها پشت کلودگارد قرار ندارند)
- هدر
CG-Server-Tag
نشان میدهد اطلاعات از کدام نود دریافت شده است. نودهای مختلف کشهای مجزایی دارند. - هدر
CG-Cache-Status
وضعیت کش را نشان میدهد. - هدر
Cache-Control
نشان میدهد که سرور مبدا چه درخواستی درباره کش شدن صفحه داشته است. - هدر
Expires
نشان میدهد که صفحه تا چه زمانی اجازه کش شدن دارد. - هدر
Set-Cookie
نشان میدهد که سرور مبدا کوکی تنظیم کرده است یا خیر.
شما میتوانید با کلیک راست روی ستونهای جدول درخواستها در مرورگر، و انتخاب گزینه Response Headers > Manage Custom Headers یک هدر را به جدول اضافه کنید تا مقدار آن را در یک نگاه برای تمامی درخواستها ببینید.