Sitenizi Cloudflare arkasına aldığınızda ilk beklentiniz genellikle sitenin hızlanmasıdır. Bunun büyük kısmı önbellekten gelir: Cloudflare, ziyaretçiye yakın veri merkezinde dosyanın bir kopyasını tutar ve isteği kaynak sunucunuza hiç göndermeden yanıtlar. Ancak varsayılan ayarlarla neyin önbelleğe alındığını, neyin alınmadığını bilmeden yapılan değişiklikler, ya hiçbir fayda sağlamaz ya da daha kötüsü, oturum açmış bir kullanıcının sayfasını başka bir ziyaretçiye gösterebilir.

Bu rehberde Cloudflare önbellek ayarlarını güncel belgelere göre adım adım ele alıyoruz: varsayılan olarak hangi dosyaların önbelleğe alındığı, cf-cache-status başlığının değerleri, Page Rules yerine gelen Cache Rules, Edge Cache TTL ve Browser Cache TTL farkı, WordPress için HTML önbelleğini güvenli kurmak, önbellek temizleme (Purge Cache), Development Mode ve Tiered Cache. Önbellek kavramına yeniyseniz önce önbellek nedir ve nasıl çalışır yazısına göz atabilirsiniz.

Cloudflare varsayılan olarak neyi önbelleğe alır?

Cloudflare varsayılan olarak neyi önbelleğe alır? Kaynak sunucu Cache-Control, Yanıtta Set-Cookie başlığı varsa,, İstek yöntemi GET dışında bir yöntemse (örneğin POST).

Cloudflare önbelleğe alma kararını içerik türüne (MIME type) göre değil, dosya uzantısına göre verir. Belgeye göre varsayılan listede şu uzantılar bulunur:

text
7Z AVI AVIF APK BIN BMP BZ2 CLASS CSS CSV DOC DOCX DMG EJS EOT EPS EXE FLAC GIF GZ
ICO ISO JAR JPG JPEG JS MID MIDI MKV MP3 MP4 OGG OTF PDF PICT PLS PNG PPT PPTX PS
RAR SVG SVGZ SWF TAR TIF TIFF TTF WEBM WEBP WOFF WOFF2 XLS XLSX ZIP ZST

Bunlara ek olarak robots.txt de varsayılan olarak önbelleğe alınır. En önemli nokta şu: Cloudflare HTML ve JSON yanıtlarını varsayılan olarak önbelleğe almaz. Yani WordPress sayfalarınız, ürün sayfalarınız ve API yanıtlarınız, siz bir Cache Rule yazmadığınız sürece her istekte kaynak sunucuya gider. Görseller, CSS ve JavaScript dosyaları ise kendiliğinden önbellekten sunulabilir.

Uzantı listede olsa bile Cloudflare aşağıdaki durumlarda yanıtı önbelleğe almaz:

  • Kaynak sunucu Cache-Control: private, no-store, no-cache veya max-age=0 gönderiyorsa,
  • Yanıtta Set-Cookie başlığı varsa,
  • İstek yöntemi GET dışında bir yöntemse (örneğin POST).

Kaynak sunucu hiç Cache-Control veya Expires göndermiyorsa Cloudflare durum koduna göre varsayılan bir süre uygular:

Durum koduVarsayılan Edge TTL
200, 206, 301120 dakika
302, 30320 dakika
404, 4103 dakika
DiğerleriVarsayılan olarak önbelleğe alınmaz

cf-cache-status başlığı ne anlama gelir?

Bir dosyanın önbellekten gelip gelmediğini anlamanın en kolay yolu yanıt başlıklarındaki cf-cache-status değerine bakmaktır. Tarayıcının geliştirici araçlarında Network sekmesinden ya da komut satırından kontrol edebilirsiniz:

bash
curl -sI https://www.ornek.com/wp-content/themes/tema/style.css | grep -i cf-cache-status
curl -sI https://www.ornek.com/ | grep -i cf-cache-status
DeğerAnlamı
HITDosya Cloudflare önbelleğinde bulundu ve oradan sunuldu.
MISSYanıt önbelleğe alınabilir ama o an önbellekte yoktu; kaynak sunucudan getirildi.
EXPIREDDosya önbellekteydi ama süresi dolmuştu; kaynak sunucudan yeni kopya alındı.
STALESüresi dolmuş kopya sunuldu, çünkü Cloudflare kaynak sunucuya ulaşıp güncel sürümü alamadı.
UPDATINGSüresi dolmuş kopya sunulurken kaynak sunucudan arka planda yenisi alınıyor.
REVALIDATEDKaynak sunucu koşullu istekle kopyanın değişmediğini doğruladı, önbellekteki kopya sunuldu.
BYPASSİstek önbelleğe uygundu ama kaynak sunucunun yanıtı sonuçta önbelleğe alınamaz durumdaydı.
DYNAMICCloudflare isteğin önbelleğe uygun olmadığına karar verdi; önbellek araması yapmadan kaynak sunucuya gitti.
NONE/UNKNOWNYanıtı Cloudflare üretti ve önbelleğe uygun değil (örneğin Workers yanıtı, WAF engeli, yönlendirme).

Page Rules mı, Cache Rules mı?

Eskiden önbellek davranışı Page Rules ile ayarlanırdı. Cloudflare 2022 yılında Page Rules'un bir dizi ayrı ürünle değiştirileceğini duyurdu ve güncel geçiş rehberinde yeni kurulumlar için modern Rules özelliklerinin kullanılmasını öneriyor. Rehber, mevcut Page Rules'un sizin bir şey yapmanıza gerek kalmadan taşınmasının planlandığını söylüyor; tarihler belgede değişebildiği için kesin takvim için Cloudflare Docs: Page Rules migration guide sayfasına bakın. Önbellek tarafında Page Rules'un karşılığı Cache Rules'tur.

Cloudflare belgesine göre plan başına Cache Rules sayısı şöyledir:

PlanCache Rules sayısı
Free10
Pro25
Business50
Enterprise300

Cache Rule nasıl oluşturulur?

Cache Rule nasıl oluşturulur? Cloudflare panelinde alan adınızı seçin ve Caching > Cache Rules sayfasını açın., Create rule, Rule name, When incoming requests match

Cache Rules yalnızca proxy edilen (turuncu bulut, Proxied) DNS kayıtlarında çalışır. Kaydınız DNS only ise kural hiçbir etki göstermez; bu farkı Proxied ve DNS only karşılaştırması yazısında anlattık. Belgedeki adımlar:

  • Cloudflare panelinde alan adınızı seçin ve Caching > Cache Rules sayfasını açın.
  • Create rule düğmesine tıklayın. İsterseniz hazır bir şablonla başlayabilirsiniz.
  • Rule name alanına açıklayıcı bir ad yazın (örneğin "WordPress HTML önbellek").
  • When incoming requests match bölümünde All incoming requests (tüm istekler) veya Custom filter expression (özel ifade) seçin. Özel ifadede Field, Operator ve Value belirleyin ya da Edit expression ile ifadeyi elle yazın.
  • Then altında Cache eligibility için Bypass cache (önbelleğe alma) veya Eligible for cache (önbelleğe almaya çalış) seçin.
  • Eligible for cache seçtiyseniz Edge TTL, Browser TTL ve Cache Key gibi isteğe bağlı ayarları yapın.
  • Place at ile kuralın sırasını belirleyin, ardından Deploy ile yayına alın veya Save as Draft ile taslak olarak saklayın.

Kurallar hangi sırayla uygulanır?

Cache Rules birbirinin üstüne eklenir: bir isteğe uyan tüm kurallar birlikte uygulanır. Aynı ayar için çakışma olursa son eşleşen kural kazanır. Bu yüzden genel bir "önbelleğe al" kuralını üste, istisnaları (Bypass cache) alta koymanız gerekir.

Edge Cache TTL ve Browser Cache TTL farkı

Edge Cache TTL, bir dosyanın Cloudflare veri merkezlerinde en fazla ne kadar tutulacağını belirler ve Cache Rules içinden ayarlanır. Browser Cache TTL ise dosyanın ziyaretçinin tarayıcısında ne kadar saklanacağını belirler. Cache Rule içindeki Edge TTL seçenekleri şunlardır:

  • Use cache-control header if present, bypass cache if not: Kaynak sunucu Cache-Control gönderiyorsa ona uy, göndermiyorsa önbelleğe alma.
  • Use cache-control header if present, use default Cloudflare caching behavior if not: Cache-Control varsa ona uy, yoksa Cloudflare'in varsayılan davranışını uygula.
  • Ignore cache-control header and use this TTL: Kaynak sunucunun başlığını yok say ve belirlediğiniz süreyi kullan.

Browser TTL için seçenekler Respect origin (kaynağa uy), Override origin (kaynağı geçersiz kıl) ve Bypass cache şeklindedir. Alan genelindeki Browser Cache TTL ayarı ise Caching > Configuration sayfasında, açılır menüden seçilir. Tüm planlarda varsayılan değer 4 saattir; kaynak sunucunuzun başlıklarına uyulmasını istiyorsanız Respect Existing Headers seçeneğini kullanın.

AyarFreeProBusinessEnterprise
Edge Cache TTL en düşük değer2 saat1 saat1 saniye1 saniye
Browser Cache TTL en düşük değer1 saniye1 saniye1 saniye1 saniye

Kaynak sunucunun Cache-Control başlığına uyulması

Free, Pro ve Business planlarda Origin Cache Control varsayılan olarak açıktır ve kapatılamaz; Cloudflare kaynak sunucunuzun Cache-Control yönergelerine uyar. Bu nedenle sunucu tarafında doğru başlıklar göndermek, Cloudflare tarafındaki ayarlar kadar önemlidir. LiteSpeed kullanan bir sunucuda bu başlıkları nasıl yöneteceğinizi LiteSpeed Cache rehberi yazısında, Apache tarafını .htaccess rehberi yazısında bulabilirsiniz.

WordPress için HTML önbelleğini güvenli kurmak

HTML önbelleği en büyük hız kazancını sağlar ama en riskli ayardır. Cloudflare'in Cache Everything örneği açıkça uyarıyor: bu seçenek, dinamik içerik olup olmadığına bakmadan tüm HTML'i önbelleğe alır ve ziyaretçiler başkasına ait içeriği görebilir. Belge; belirli çerez içeren istekleri, dinamik içerik sunan yolları ve uzantısız istekleri kural dışında bırakmanızı öneriyor.

WordPress belgelerine göre oturum açmış kullanıcılar için wordpress_[hash], wordpress_logged_in_[hash] ve wp-settings-{time}-[UID]; yorum yapan ziyaretçiler için comment_author_{HASH} gibi çerezler ayarlanır. Bu bilgiyle iki kurallı bir yapı kurabilirsiniz.

Kural 1: HTML'i önbelleğe uygun yap (üstte)

text
(http.host eq "www.ornek.com")

Then: Eligible for cache. Edge TTL için başlangıçta Use cache-control header if present, use default Cloudflare caching behavior if not seçmek en güvenli yoldur.

Kural 2: Yönetim paneli ve oturum çerezleri için Bypass (altta)

text
(http.host eq "www.ornek.com" and (
  starts_with(http.request.uri.path, "/wp-admin")
  or http.request.uri.path eq "/wp-login.php"
  or starts_with(http.request.uri.path, "/wp-json")
  or http.cookie contains "wordpress_logged_in_"
  or http.cookie contains "wp-settings-"
  or http.cookie contains "comment_author_"
))

Then: Bypass cache. Son eşleşen kural kazandığı için bu kural birinci kuralın altında olmalıdır. Cloudflare'in kendi örneği de aynı mantıkla http.cookie contains kullanarak çerez varken önbelleği atlar.

Purge Cache: önbelleği temizleme

Purge Cache: önbelleği temizleme: Caching > Configuration, Purge Cache, Purge by, Kontrol edip Purge düğmesine basın.

Tüm planlarda tek dosya (URL), Purge Everything, cache-tag, hostname ve prefix yöntemleri bulunur. Panelden iki temel yöntem:

URL ile temizleme (önerilen)

  • Caching > Configuration sayfasını açın.
  • Purge Cache altında Custom Purge seçin.
  • Purge by için URL seçin ve adresleri örnekteki biçimde girin.
  • Kontrol edip Purge düğmesine basın.

URL ile temizlemede alan adı büyük/küçük harf duyarsızdır ama yol (path) duyarlıdır; joker karakter (*) desteklenmez. 301 veya 302 dönen bir URL'yi temizlerseniz yalnızca önbellekteki yönlendirme silinir, hedef sayfayı ayrıca temizlemeniz gerekir.

Purge Everything

  • Caching > Configuration sayfasında Purge Cache altında Purge Everything seçin.
  • Uyarı penceresinde Purge Everything ile onaylayın.

Free planda hesap başına sınırlar belgede şöyle veriliyor: hostname, tag, prefix ve Purge Everything için dakikada 5 istek (25 isteklik kova), tek dosya temizleme için saniyede 800 URL; her iki türde istek başına en fazla 100 işlem.

Development Mode ne işe yarar?

Development Mode, Cloudflare'in kenar önbelleğini ve Polish özelliğini geçici olarak askıya alır; CSS, JavaScript veya görsellerde yaptığınız değişiklikleri hemen görmenizi sağlar. Caching > Configuration sayfasında Development Mode anahtarını On yaparak açılır ve siz daha önce kapatmazsanız 3 saat sonra kendiliğinden kapanır.

Tiered Cache kısaca

Tiered Cache, Cloudflare veri merkezlerini alt katman (ziyaretçiye yakın) ve üst katman olarak düzenler. Alt katmanda bulunamayan dosya önce üst katmana sorulur; kaynak sunucuya yalnızca üst katman gider. Böylece kaynak sunucunuza gelen istek sayısı azalır. Smart Tiered Cache topolojisi Free dahil tüm planlarda kullanılabilir; panelde Caching > Tiered Cache sayfasından açılır. Generic Global, Regional ve Custom topolojileri Enterprise planlara özeldir.

Sık yapılan hatalar

  • HTML'in varsayılan olarak önbelleğe alındığını sanmak. Kural yazmadan HTML'de DYNAMIC görmeniz normaldir.
  • Bypass kuralını genel önbellek kuralının üstüne koymak. Son eşleşen kural kazandığı için istisnalar altta olmalıdır.
  • Kaydı DNS only bırakıp Cache Rules'un çalışmasını beklemek.
  • Her değişiklikte Purge Everything kullanmak. Bunun yerine değişen URL'leri temizleyin.
  • Kaynak sunucunun Set-Cookie veya no-cache gönderdiğini fark etmeden "önbellek çalışmıyor" sonucuna varmak.

Önbellek ayarlarından sonra site hâlâ yavaşsa sorun büyük ihtimalle önbelleğe alınamayan istekleri karşılayan sunucudadır; web sitesi yavaş açılıyor rehberi bu noktada yardımcı olur.

Sık Sorulan Sorular

Cloudflare HTML sayfalarını önbelleğe alır mı?

Varsayılan olarak hayır. Cloudflare belgesi HTML ve JSON yanıtlarının varsayılan olarak önbelleğe alınmadığını belirtir. HTML önbelleği için Cache Eligibility değeri Eligible for cache olan bir Cache Rule yazmanız ve oturum çerezleri için istisna eklemeniz gerekir.

Ücretsiz planda kaç Cache Rule yazabilirim?

Cloudflare belgesine göre Free planda 10 Cache Rule hakkınız vardır. Pro planda 25, Business planda 50, Enterprise planda 300 kural tanımlanabilir.

Page Rules hâlâ kullanılabilir mi?

Cloudflare, Page Rules'un ayrı ürünlerle değiştirileceğini duyurdu ve yeni kurulumlar için modern Rules özelliklerini öneriyor. Önbellek için Cache Rules kullanın; mevcut Page Rules'un taşınma takvimi için güncel geçiş belgesine bakın.

Development Mode ile Purge Cache arasındaki fark nedir?

Development Mode önbelleği 3 saat boyunca atlar ama silmez. Purge Cache ise önbellekteki kopyaları gerçekten siler. Kalıcı güncelleme için Purge Cache kullanılır.

cf-cache-status BYPASS ne demek?

İstek önbelleğe uygundu ama kaynak sunucunun yanıtı önbelleğe alınamaz durumdaydı. Genellikle sebep, kaynak sunucunun gönderdiği Cache-Control: private/no-store/no-cache veya Set-Cookie başlığıdır.

Cloudflare ve adı geçen diğer hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; Cloudflare ile ortaklık veya bayilik ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: Cloudflare nedir, nasıl kurulur · Proxied ve DNS only farkı · Cloudflare WAF ve bot koruması · LiteSpeed Cache rehberi · CDN nedir · Site optimizasyonu