کش، امنیت، WAF و پاکسازی
کلید کش و پاکسازی: چرا «پاکسازی کردم اما هنوز قدیمی است» اتفاق میافتد
هر شیء کششده زیر کلیدی ذخیره میشود که از خود درخواست ساخته میشود — طرح (scheme)، میزبان، مسیر و رشته کوئری. یک پاکسازی فقط زمانی یک ورودی را پاک میکند که دقیقاً همان کلید را نشانه بگیرد. درک همین یک ایده تقریباً همه موارد «پاکسازی کار نکرد» را توضیح میدهد.
ابزارها و مطالب مرتبط
دو موضوع پنل که این موضوع بر آنها تکیه دارد، و نسخه راهنمای کامل با مثالهای API و cdnctl.
خواندن هدرهای وضعیت کش
HIT، MISS، BYPASS، EXPIRED — نیمه تشخیصی این گردش کار.
باز کردن موضوع
پاکسازی محتوای کششده
راهنمای گامبهگام Purge Management: پاکسازی مسیر، مسیرهای ذخیرهشده، پاکسازی کامل.
باز کردن موضوع
راهنمای پاکسازی کش CDN
همان مدل ذهنی با عمق بیشتر، همراه با فراخوانیهای API و دستورهای تکخطی cdnctl برای اسکریپتهای استقرار.
خواندن راهنما
مسیر در پنل
- Management Panel
- CDN Accounts
- Purge Management
پیشنیازها
- مسیر باید به حساب انتخابشده تعلق داشته باشد.
- با URL عمومی دقیق (طرح + میزبان + مسیر + کوئری) تشخیص دهید، نه با خلاصهای از آن.
موارد کاربرد
پس از یک استقرار، مسیری را پاکسازی کردهاید اما یک بازدیدکننده هنوز نسخه قدیمی را گزارش میکند. تقریباً در همه موارد پاکسازی کار کرده است — فقط ورودی کش دیگری را پاک کرده، نه آن ورودیای که به بازدیدکننده سرویسدهی میشود (یک نسخه با رشته کوئری، نسخه موبایل، یا کش مرورگر خود او).
جریان کاری
- URL دقیقی را که بازدیدکننده قدیمی میبیند به دست آورید — شامل طرح (https)، میزبان (www یا apex) و هر رشته کوئری. «صفحه محصولات» کافی نیست؛ /products و /products?page=2 دو ورودی کش متفاوت هستند.
- بررسی کنید CDN واقعاً چه کرده است: همان URL دقیق را با `curl -I` بزنید و هدر `X-Proxy-Cache-MT` را بخوانید. HIT یعنی CDN یک نسخه کششده را سرویسدهی کرده؛ MISS یا BYPASS یعنی چیزی که محتوای قدیمی را سرویسدهی میکند CDN نیست.
- در Purge Management با محدودهای پاکسازی کنید که با مشکل همخوانی دارد: یک مسیر دقیق برای یک URL، پاکسازی پوشه برای همه چیز زیر یک مسیر، یا پاکسازی کل حساب وقتی ساختار در همه جا تغییر کرده است.
- به همان روشی که تشخیص دادید تأیید کنید: همان URL دقیق را دوباره درخواست کنید و انتظار MISS (تازه از مبدأ) و سپس HIT را داشته باشید. اگر مرورگر خودتان هنوز صفحه قدیمی را نشان میدهد، بازخوانی کامل (hard refresh) کنید — CDN نمیتواند به کش مرورگرها دست بزند.
بررسیها
- رشتههای کوئری ورودیهای جداگانه میسازند: /banner.jpg و /banner.jpg?v=2 مستقل از هم کش میشوند. پاکسازی یکی به دیگری دست نمیزند.
- طرح و میزبان بخشی از کلید هستند: http در برابر https و www در برابر apex ورودیهای متفاوتیاند. شکل استانداردی را پاکسازی کنید که بازدیدکنندگان واقعاً استفاده میکنند.
- موبایل و دسکتاپ میتوانند دو نسخه جداگانه از همان مسیر باشند — گزارش محتوای قدیمی فقط از تلفنها معمولاً به نسخه موبایل مربوط است.
- پاکسازی کش CDN را پاک میکند، هرگز کش مرورگر بازدیدکننده را. چیزی که آن پنجره آخر را محدود میکند TTL مرورگر در قواعد کش شماست، نه یک پاکسازی دیگر.
پرسشهای متداول
پاکسازی موفق اعلام شد اما صفحه هنوز قدیمی است — یعنی شکست خورده؟
تقریباً بهطور قطع نه. با `curl -I` روی همان URL دقیق تشخیص دهید: اگر در اولین درخواست پس از پاکسازی MISS ببینید، ورودی CDN پاک شده و نسخه قدیمی جای دیگری است — یک نسخه دیگر از URL، یا کش مرورگر بیننده.
مسیر /products را پاکسازی کردم اما /products?page=2 و /products?utm_source=x هنوز قدیمی هستند.
هر ترکیب رشته کوئری یک ورودی کش مستقل است. پوشه/پیشوند را پاکسازی کنید تا همه ورودیهای زیر آن مسیر پاک شوند، یا پرترافیکترین نسخهها را بهصورت صریح پاکسازی کنید.
آیا بعد از هر استقرار باید پاکسازی کنم؟
اگر HTML شما با TTL طولانی کش میشود، بله — پاکسازی مسیرهای تغییرکرده را یک مرحله از استقرار کنید. API پاکسازی و cdnctl دقیقاً برای همین وجود دارند؛ اسکریپت استقراری که با یک پاکسازی محدود تمام میشود هرگز این دسته از مشکلات را ندارد.
چه زمانی باید از «پاکسازی کامل» استفاده کنم؟
وقتی ساختار URL در سراسر سایت تغییر کرده (یک مهاجرت، یک بازطراحی) و پاکسازیهای مسیرمحور به فهرست بلندی از حدسها تبدیل میشوند. آگاهانه استفاده کنید: بلافاصله بعد از آن، هر درخواست تا گرم شدن دوباره کش یک MISS است و مبدأ شما برای مدتی کوتاه کل ترافیک را تحمل میکند.