- چگونه پاکسازی کش کلودفلر انتشار و عیبیابی را تحت تاثیر قرار میدهد؟
- چرا پاکسازی کش کلودفلر لازم است؟
- انواع پاکسازی کش در کلودفلر
- گرفتن Zone ID و ساخت API Token با حداقل دسترسی
- بررسی وضعیت کش یک پاسخ (cf-cache-status)
- نکات تنظیمات سرور و هدرها (Nginx / Apache)
- ادغام با وردپرس و پلاگینها
- اتوماسیون پاکسازی کش در CI/CD
- اسکریپتهای لینوکسی برای پاکسازی گروهی
- نکات امنیتی و محدودیتها
- موارد خاص — Workers، KV و رندرینگ/GPU
- بهترین روشها و توصیههای عملی
- خاتمة
- الأسئلة الشائعة
چگونه پاکسازی کش کلودفلر انتشار و عیبیابی را تحت تاثیر قرار میدهد؟
پاکسازی کش کلودفلر (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 استفاده کنید؛ در پاسخ فیلد بطاقة تعريف همان 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 برای حداقل کردن اثرات جانبی استفاده کنید.
- هدرهای التحكم في ذاكرة التخزين المؤقت را بهدرستی روی 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 و اتوماسیون پس از انتشار، میتوانید منابع و صفحات مربوطه را بررسی کنید یا با تیم پشتیبانی تماس بگیرید.


