Skip to content
Bloga dön
Rehber Cloudflare Cache Performans Web Güvenliği DevOps Groq

Cloudflare Cache Temizleme: Adım Adım Rehber ve En İyi Uygulamalar

Cloudflare üzerinden önbelleği (cache) etkili bir şekilde temizlemek, güncel içerik sunmak ve performans sorunlarını çözmek için izlenmesi gereken adımları ve otomasyon örneklerini ayrıntılı olarak anlatan bir rehber.

Caner Serbest

Sistem ve Altyapı

6 dk okuma

Cloudflare Cache Temizleme: Adım Adım Rehber ve En İyi Uygulamalar


İçindekiler

  1. Giriş
  2. Cloudflare Cache Nasıl Çalışır?
  3. Neden Cache Temizlenir?
  4. Cache Temizleme Yöntemleri
    • 4.1. Kontrol Paneli Üzerinden “Purge Everything”
    • 4.2. URL Bazlı Temizleme
    • 4.3. Tag (Etiket) Bazlı Temizleme
    • 4.4. API Kullanarak Temizleme
    • 4.5. CLI / HTTPie ile Otomasyon
  5. Otomasyon ve Süreklilik
  6. En İyi Uygulamalar
  7. Sık Karşılaşılan Sorunlar ve Çözüm Önerileri
  8. Sonuç

1. Giriş

Web sitelerinin yanıt süresini kısaltmak ve bant genişliği maliyetlerini azaltmak amacıyla Cloudflare, statik dosyaları ve sık kullanılan dinamik sayfaları edge sunucularında önbelleğe alır. Bu mekanizma çoğu senaryoda büyük bir avantaj sağlasa da, içerik değiştiğinde eski bir sürümün hâlâ ziyaretçilere sunulması, cache‑in temizlenmemesi sorunu nedeniyle oluşur. Bu yazıda, Cloudflare cache’ini güvenli ve kontrollü bir şekilde temizlemenin farklı yollarını, otomasyon örneklerini ve dikkat edilmesi gereken en iyi uygulamaları ele alacağız.


2. Cloudflare Cache Nasıl Çalışır?

  • Edge Nodes: Dünya genelindeki veri merkezlerinde (PoP) dosyalar saklanır.
  • TTL (Time‑to‑Live): Her bir obje için belirlenen geçerlilik süresi vardır. TTL sona erdiğinde obje yeniden origin sunucusundan alınır.
  • Cache‑Key: URL, query string, cookie ve header kombinasyonuna göre oluşturulan bir anahtardır. Aynı anahtar birden fazla kez istek alırsa, önbellek yanıt verir.
  • Cache‑Tag: Cloudflare Workers veya API üzerinden objelere etiket eklenebilir; aynı etiketle işaretlenen tüm objeler toplu olarak temizlenebilir.

Bu yapı, performansı artırırken güncellenen içeriklerin anlık dağıtımını zorlaştırabilir. İşte bu noktada “purge” (temizleme) işlemi devreye girer.


3. Neden Cache Temizlenir?

  1. İçerik Güncellemesi: Yeni bir blog yazısı, CSS/JS dosyası veya API yanıtı yayınlandığında eski sürümün gösterilmesi.
  2. Hata Düzeltmesi: Yanlış yapılandırma sonucu hatalı sayfaların önbelleğe alınması.
  3. Güvenlik: Hassas verilerin önbellekte kalması riskini ortadan kaldırmak.
  4. A/B Testi ve Kişiselleştirme: Belirli segmentler için farklı içerik sunulurken önbelleğin çabuk temizlenmesi gerekir.
  5. Performans Analizi: Cache temizlik sonrası ölçüm yaparak iyileştirme etkilerini izlemek.

4. Cache Temizleme Yöntemleri

4.1. Kontrol Paneli Üzerinden “Purge Everything”

En basit yöntem Cloudflare Dashboard → Caching → Configuration → Purge Everything butonuna tıklamaktır. Bu, zone‑daki tüm objeleri siler ve bir sonraki isteklerde origin sunucusundan yeni içerik çekilir.

Uyarı: Büyük trafiğe sahip sitelerde tüm cache’i bir anda temizlemek, origin sunucusuna ani bir yük bindirebilir. Bu yüzden bu yöntemi sadece kritik bir güncelleme sonrası ve düşük trafili zaman dilimlerinde tercih edin.

4.2. URL Bazlı Temizleme

Sadece belirli bir sayfa ya da dosyanın önbelleğini temizlemek isterseniz:

  1. Dashboard → Caching → Custom Purge → URL Purge sekmesi.
  2. Temizlemek istediğiniz tam URL’yi girin (örnek: https://example.com/css/main.css).
  3. Purge butonuna tıklayın.

Bu yöntem, değişiklik yapılan tek bir dosya için ideal bir çözümdür.

4.3. Tag (Etiket) Bazlı Temizleme

Cloudflare Workers veya API üzerinden objelere tag ekleyebilir ve aynı tag’e sahip tüm objeleri toplu olarak temizleyebilirsiniz.

// workers example – add tag
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const response = await fetch(request)
  response.headers.set('Cache-Tag', 'blog-post-2024')
  return response
}

Tag‑tabanlı temizlik, bir blog serisi, bir ürün koleksiyonu veya bir API endpoint grupunu güncellerken çok kullanışlıdır.

4.4. API Kullanarak Temizleme

Programatik bir yaklaşım için Cloudflare REST API en doğru yoldur. Aşağıdaki örnek curl yerine HTTPie kullanarak daha okunaklı bir komut sunar:

http POST https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/purge_cache \
Authorization:"Bearer $CF_API_TOKEN" \
Content-Type:application/json \
purge_everything=true
  • {ZONE_ID}: Cloudflare panelinden zone‑ID’nizi alın.
  • $CF_API_TOKEN : API token (Cache Purge izinli) oluşturun.
  • purge_everything=true tüm zone‑yı temizler.

URL Bazlı Temizleme API Örneği

http POST https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/purge_cache \
Authorization:"Bearer $CF_API_TOKEN" \
Content-Type:application/json \
urls:='["https://example.com/css/main.css","https://example.com/js/app.js"]'

Tag Bazlı Temizleme API Örneği

http POST https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/purge_cache \
Authorization:"Bearer $CF_API_TOKEN" \
Content-Type:application/json \
 tags:='["blog-post-2024"]'

Not: API yanıtı JSON formatında olur. Başarılı bir temizlik için "success": true alanını kontrol edin.

4.5. CLI / HTTPie ile Otomasyon

CI/CD pipeline’ınızda ya da bir cron job’da cache temizleme işlemini otomatikleştirmek için bash script hazırlayabilirsiniz.

#!/usr/bin/env bash

ZONE_ID="YOUR_ZONE_ID"
TOKEN="YOUR_API_TOKEN"

# 1. Tüm cache’i temizle
http POST https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache \
    Authorization:"Bearer ${TOKEN}" \
    Content-Type:application/json \
    purge_everything=true

# 2. Belirli URL’leri temizle (isteğe bağlı)
# http POST https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache \
#    Authorization:"Bearer ${TOKEN}" \
#    Content-Type:application/json \
#    urls:='["https://example.com/style.css"]'

Bu script’i chmod +x purge.sh ile çalıştırılabilir hâle getirin ve crontab -e içine aşağıdaki satırı ekleyin (örnek: her gece 02:00’da çalıştırmak için):

0 2 * * * /path/to/purge.sh >> /var/log/cf_purge.log 2>&1

5. Otomasyon ve Süreklilik

  1. GitOps Yaklaşımı – İçerik değişikliklerini git üzerinden yönetip, bir GitHub Action tetikleyerek ilgili URL’leri API üzerinden temizleyebilirsiniz.
  2. Webhook Entegrasyonu – CMS (WordPress, Ghost vb.) bir içerik yayınlandığında Cloudflare webhook’una POST gönderip otomatik purge tetiklenebilir.
  3. Edge Workers – Dinamik olarak Cache-Control: max-age=0 başlığını ekleyerek, belirli bir endpoint’in her zaman origin’den çekilmesini sağlayabilirsiniz.

Örnek GitHub Action

name: Purge Cloudflare Cache
on:
  push:
    branches: [ main ]
    paths:
      - "public/**"
jobs:
  purge:
    runs-on: ubuntu-latest
    steps:
      - name: Call Cloudflare API
        env:
          CF_TOKEN: ${{ secrets.CF_API_TOKEN }}
          ZONE_ID: ${{ secrets.CF_ZONE_ID }}
        run: |
          http POST https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache \
            Authorization:"Bearer ${CF_TOKEN}" \
            Content-Type:application/json \
            purge_everything=true

Bu yapı sayesinde, public/ klasöründe bir değişiklik olduğunda otomatik olarak tüm cache temizlenir.


6. En İyi Uygulamalar

UygulamaAçıklama
Cache‑Tag KullanımıAynı içerik grubunu tek bir tag ile işaretleyin; toplu temizlik tek bir API çağrısı ile yapılır.
TTL Değerlerini Optimize EdinÇok sık güncellenen dosyalar için düşük TTL (max-age=60) belirleyin, böylece her purge ihtiyacını azaltırsınız.
Purge‑Everything’ı Sınırlı KullanınBüyük sitelerde tüm cache’i temizlemek, origin’e ani yük bindirir. Mümkün olduğunca URL‑ve Tag‑bazlı temizlik tercih edin.
API Token Yetkilerini En Küçük Seviyede TutunCache Purge izni dışında bir yetki vermeyin; güvenlik riski azalır.
Temizlik Sonrası İzlemeCloudflare Analytics > Caching sekmesinden Cache Hit Ratio ve Purge Requests grafiğini izleyin.
Otomasyon Log’larını SaklayınCron ya da CI pipeline’larından dönen logları merkezi bir log sistemi (ELK, Loki) içinde tutarak hataları hızlı yakalayın.

7. Sık Karşılaşılan Sorunlar ve Çözüm Önerileri

  1. Purge İsteği Başarısız Oluyor
    • Neden: API token’da Cache Purge izni eksik.
    • Çözüm: Cloudflare dashboard → API Tokens → Create Token → Edit Cloudflare Workers ya da Custom Token → Cache Purge iznini ekleyin.
  2. Temizlenen URL Hâlâ Eski İçeriği Gösteriyor
    • Neden: Tarayıcıda local cache (örnek: Service Worker) tutuluyor.
    • Çözüm: Cache-Control: no-cache, must-revalidate başlığını ekleyin veya tarayıcıda hard‑refresh (Ctrl+F5) yapın.
  3. Purge Sonrası Trafik Patlaması
    • Neden: Origin sunucusu aynı anda yüksek sayıda istek alıyor.
    • Çözüm: Staging ortamda önbelleği kademeli temizleyin (Purge by Tag), ya da Rate Limiting kurallarını geçici olarak artırın.
  4. Tag Bazlı Temizleme Çalışmıyor
    • Neden: Objeye tag eklenmemiş.
    • Çözüm: Workers’da Cache-Tag header’ının doğru bir şekilde eklenip eklenmediğini kontrol edin.

8. Sonuç

Cloudflare cache’i, web performansını artıran güçlü bir araçtır; ancak güncel içerik sunmak ve güvenlik risklerini azaltmak için düzenli temizlik (purge) işlemleri şarttır. Bu makalede, kontrol paneli, URL‑bazlı, tag‑bazlı ve API‑tabanlı temizlik yöntemlerini, otomasyon örneklerini ve en iyi uygulamaları ele aldık.

Özetle:

  • İhtiyaca göre yöntem seçin – tüm site için “Purge Everything” yerine URL veya tag‑bazlı temizlik tercih edin.
  • API ve otomasyon – CI/CD, cron job veya webhook entegrasyonlarıyla temizlik sürecini tamamen otomatikleştirin.
  • Güvenliği ihmal etmeyin – API token izinlerini kısıtlayın ve log‑lamayı unutmayın.
  • Performans izleme – temizlik sonrası cache hit oranlarını ve origin yükünü izleyerek gerekli ayarlamaları yapın.

Bu adımları takip ettiğinizde, Cloudflare cache yönetimi sorunsuz, ölçeklenebilir ve güvenli bir hâle gelecektir. İyi çalışmalar!


Bu yazı Groq ile otomatik oluşturulmuştur.