آموزش پاکسازی کش کلودفلر: راهنمای جامع برای مدیران وب و DevOps
کش کلودفلر را با رعایت بهترین روش‌ها پاکسازی کنید. این مقاله شامل آموزش‌های کامل، نکات امنیتی و اسکریپت‌های لینوکسی است.

آموزش پاکسازی کش کلودفلر: راهنمای جامع برای مدیران وب و DevOps

پاکسازی کش کلودفلر یکی از مراحل کلیدی در بهینه‌سازی وب‌سایت‌ها و اپلیکیشن‌هاست. این راهنما شامل روش‌های مختلف پاکسازی، نکات امنیتی و مثال‌های کاربردی مانند استفاده از API با curl می‌باشد.
0 اشتراک گذاری
0
0
0
0

چگونه پاکسازی کش کلودفلر انتشار و عیب‌یابی را تحت تاثیر قرار می‌دهد؟

پاکسازی کش کلودفلر (Cloudflare) یکی از مراحل کلیدی در چرخه انتشار و عیب‌یابی وب‌سایت‌ها و اپلیکیشن‌هاست. این راهنما عملی و تخصصی روش‌های پاکسازی، نکات امنیتی، دستورات خط فرمان، اتوماسیون در CI/CD و تنظیمات Nginx/Apache و وردپرس را پوشش می‌دهد تا مدیران سایت، DevOps، تیم‌های توسعه، تریدرها و گیمرها بتوانند پس از به‌روزرسانی یا رفع باگ، تغییرات را سریع و امن به edge (۸۵+ لوکیشن جهانی) منتقل کنند.

چرا پاکسازی کش کلودفلر لازم است؟

پاکسازی کش زمانی ضروری است که نسخه‌های قدیمی محتوا (مثل CSS/JS/تصاویر یا HTML کش شده در edge) باعث نمایش نادرست یا مشکلات عملکرد شوند.

  • پس از بروزرسانی فایل‌های استاتیک یا محتوای HTML که در edge کش شده‌اند.
  • بعد از deploy اپلیکیشن یا migration که نیاز است نسخه جدید فوراً در لبه‌ها نشان داده شود.
  • برای رفع مشکلات نمایش یا خطاهای مرتبط با محتوای قدیمی.
  • در سناریوهای زمان‌حساس مثل ترید یا گیم که محتوای زنده باید لحظه‌ای به‌روزرسانی شود.

انواع پاکسازی کش در کلودفلر

1) Purge Everything (پاکسازی کامل)

پاکسازی همه‌ی cache های یک Zone. سریع و ساده اما هزینه‌بر و گاهی باعث افزایش بار روی origin می‌شود.

curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/purge_cache" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'

2) Purge by URL (پاکسازی انتخابی بر اساس URL)

پاکسازی فایل‌ها یا صفحات مشخص؛ بهترین گزینه برای بروزرسانی assets یا صفحات خاص تا از اثرات جانبی پاکسازی کامل جلوگیری شود.

curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/purge_cache" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{"files":["https://example.com/css/app.css","https://example.com/js/app.js"]}'

3) Purge by Tag (پاکسازی با تگ) — پیشرفته

پاکسازی بر اساس تگ برای invalidate گروهی از منابع که با یک تگ مشخص شده‌اند مناسب است؛ مفید در برنامه‌های پیچیده و microservices.

توجه: این ویژگی ممکن است در برخی پلن‌ها یا اکانت‌های Enterprise متفاوت باشد.

curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/purge_cache" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
--data '{"tags":["product-123","homepage-v2"]}'

4) Development Mode و Cache Bypass

Development Mode از داشبورد cache در edge را برای ۳ ساعت غیرفعال می‌کند — مناسب برای توسعه کوتاه‌مدت.

برای bypass مسیرهای API یا براساس کوکی‌ها از Page Rules یا Workers استفاده کنید.

گرفتن Zone ID و ساخت API Token با حداقل دسترسی

برای گرفتن Zone ID می‌توانید از API استفاده کنید؛ در پاسخ فیلد id همان Zone ID است.

curl -X GET "https://api.cloudflare.com/client/v4/zones?name=example.com" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json"

برای ساخت API Token به مسیر Cloudflare → My Profile → API Tokens → Create Token بروید و فقط دسترسی‌های لازم را بدهید. معمولاً permission Zone → Cache Purge برای zoneهای مشخص کفایت می‌کند. محدود کردن token به zone خاص و قرار دادن تاریخ انقضا امنیت را به‌طور قابل‌توجهی افزایش می‌دهد.

بررسی وضعیت کش یک پاسخ (cf-cache-status)

برای دیباگ از هدر cf-cache-status استفاده کنید که مقادیر معمول آن عبارت‌اند از: HIT, MISS, EXPIRED, DYNAMIC, BYPASS, REVALIDATED.

curl -I -s -D - https://example.com | grep -i cf-cache-status

نکات تنظیمات سرور و هدرها (Nginx / Apache)

برای فایل‌های استاتیک (فشرده و immutable)

استفاده از Cache-Control بلندمدت همراه با fingerprinting (hash در نام فایل) بهترین روش برای assets است تا نیاز به purge کامل کاهش یابد.

location ~* \.(js|css|jpg|jpeg|png|svg|woff2?)$ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000, s-maxage=2592000, immutable";
}

این تنظیم در کنار تنظیمات Cache Everything / Edge Cache TTL در Cloudflare باعث می‌شود assets برای مدت طولانی در edge ذخیره شوند.

برای صفحات HTML (قابل به‌روزرسانی)

location / {
    add_header Cache-Control "no-cache, must-revalidate, max-age=0";
}

در Cloudflare می‌توانید Edge Cache TTL پایین‌تری قرار دهید یا از Page Rules برای کنترل بیشتر روی صفحات مهم استفاده کنید.

احترام به هدر Origin

در داشبورد Cloudflare بخش Caching گزینه‌ای وجود دارد که تعیین می‌کند آیا Cloudflare هدرهای origin را رعایت کند یا از تنظیمات خودش استفاده نماید. توصیه می‌شود برای کنترل بیشتر از Origin Cache-Control استفاده کنید.

ادغام با وردپرس و پلاگین‌ها

پلاگین رسمی Cloudflare برای وردپرس امکان purge خودکار بعد از publish یا update را فراهم می‌کند.

  • پلاگین‌های کش مثل WP Rocket یا W3 Total Cache گزینه‌های purge محلی دارند؛ هم‌زمان از purge با Cloudflare استفاده کنید تا edge هم بروز شود.
  • برای سایت‌های مهم (VPS مخصوص ترید یا سایت‌های گیمینگ) تنظیمات TTL را کوتاه و پاکسازی انتخابی را فعال کنید تا تأخیر و ثبات حفظ شود.

اتوماسیون پاکسازی کش در CI/CD

پس از deploy خودکار (GitHub Actions / GitLab CI / Jenkins) یک مرحله ساده برای purge URLهای تولیدشده اضافه کنید. حتماً از secret management برای نگهداری توکن‌ها استفاده کنید.

- name: Purge Cloudflare cache
  run: |
    curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/purge_cache" \
    -H "Authorization: Bearer ${{ secrets.CF_API_TOKEN }}" \
    -H "Content-Type: application/json" \
    --data "{\"files\": [\"https://example.com/path/to/file.js\"]}"

اسکریپت‌های لینوکسی برای پاکسازی گروهی

برای purge لیستی از URLها می‌توانید از یک فایل و jq استفاده کنید. برای سرعت بیشتر، دسته‌ها را ۳۰تایی کرده و موازی اجرا کنید.

cat urls.txt | jq -R -s -c 'split("\n")[:-1]' | \
xargs -I{} curl -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/purge_cache" \
 -H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" \
 --data '{"files":'{}'}'

نکات امنیتی و محدودیت‌ها

حداقل دسترسی‌ها برای API Token: فقط “Cache Purge” و محدود به zoneهای لازم؛ تاریخ انقضا قرار دهید.

  • Rate limits: Purge API دارای محدودیت درخواست است؛ از Purge Everything پی‌درپی خودداری کنید و در صورت نیاز از پاکسازی دسته‌ای استفاده کنید.
  • لاگینگ: هر purge را در لاگ‌های CI یا سیستم ثبت کنید تا علت و زمان آن مشخص باشد—برای ممیزی‌ها مفید است.

موارد خاص — Workers، KV و رندرینگ/GPU

اگر از Cloudflare Workers استفاده می‌کنید، Purge استاندارد zone cache ممکن است cache مربوط به Workers را پاک نکند؛ در کد Worker از cache.delete و راهکارهای مخصوص استفاده کنید.

برای فایل‌های بزرگ مثل مدل‌ها یا فایل‌های رندر، از Cache-Control بلند مدت برای فایل‌های غیرتغییرپذیر و از purge انتخابی برای بروزرسانی استفاده کنید.

برای کاربران حساس مثل تریدرها و گیمرها، انتخاب صحیح لوکیشن و پیکربندی CDN برای کاهش پینگ مهم است؛ cache باید هوشمندانه تنظیم شود تا محتوای حیاتی همیشه تازه باقی بماند.

بهترین روش‌ها و توصیه‌های عملی

  • از Purge Everything فقط به‌عنوان آخرین راه استفاده کنید.
  • از Purge by URL یا Tags برای حداقل کردن اثرات جانبی استفاده کنید.
  • هدرهای Cache-Control را به‌درستی روی origin تنظیم کنید.
  • برای محتوای استاتیک از long-lived cache + fingerprinting استفاده کنید تا بتوان بدون purge کامل فایل‌های جدید را منتشر کرد.
  • از Page Rules یا Cloudflare Workers برای مسیرهای حساس یا APIها که باید bypass شوند استفاده کنید.
  • اتوماسیون: پس از هر deployment، purge موردی (فایل‌های جدید) را با CI ترکیب کنید.
  • امنیت: از توکن‌های محدودشده استفاده کرده و دسترسی‌ها را دوره‌ای بازبینی کنید.

برای حفظ تعادل بین سرعت و ثبات، ترکیب هدرهای origin و purge انتخابی بهترین نتیجه را می‌دهد.

جمع‌بندی

پاکسازی کش کلودفلر عملی ساده به نظر می‌رسد اما نیازمند درک انواع پاکسازی، هدرها و پیامدهای عملکردی و امنیتی است. با پیکربندی درست، شامل رعایت Origin Cache-Control، استفاده از tags و purgeهای انتخابی، می‌توان هم سرعت و هم ثبات اپلیکیشن را حفظ کرد—به‌خصوص در زیرساخت‌هایی با بیش از ۸۵ لوکیشن جهانی و استفاده از سرورهای GPU، VPS مخصوص ترید یا سرویس‌های ضد DDoS.

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

سؤالات متداول

شاید دوست داشته باشید