Teknoloji

CDN Önbellekleme, Cache-Control ve Edge Kuralları: WordPress ve WooCommerce’de Tam İsabet Ayarlar

Hızlı Bir Hikâyeyle Başlayalım: Bir Kampanya Günü ve Nefes Alan Sayfalar

Hiç başınıza geldi mi? Büyük bir kampanya sabahı, kahvenizi alıp bilgisayarın başına oturuyorsunuz, her şey planlı. Reklamlar açık, içerikler güncel, WooCommerce sepetler dolacak diye umut yüksek. Sonra aniden grafikler zıplıyor ama sayfa açılış süreleri uzuyor, yönetim paneli ağırlaşıyor, sipariş süreçleri tekliyor. O an anlarsınız: statik olanla dinamik olanı ayırıp doğru CDN önbellekleme kurallarını yazmadıysanız, trafiği karşılamak bir masaldan kabusa dönebilir.

Ben de benzer bir sabah yaşayınca oturup “nerede, neyi, nasıl cache’lemeliyim?” diye her detayı didikledim. HTML ne kadar saklanır, görsellerin süresi ne olmalı, WooCommerce sepet ve ödeme sayfaları neden bu kadar hassas, peki Cache-Control başlıkları nasıl konuşur, edge kuralları nerede devreye girer? Bugün, tam da bunları anlatmak istiyorum. Mesela şöyle düşünün: Mağazanızın vitrinini sabit tutup kasayı canlı bırakmak gibi. Yazının devamında kavramları basit örneklerle açacağız, pratik ayar önerileri vereceğiz ve sonunda elinizde uygulanabilir bir çerçeve olacak.

CDN Önbellekleme Nedir, Nereden Başlamalı?

Vitrin, Depo ve Kasa Benzetmesi

CDN’i, mağazanızın farklı şehirlere yakın küçük depoları gibi düşünün. Ziyaretçi nerede olursa olsun vitrindeki görseller, CSS ve JS dosyaları ona en yakın yerden sunulur. Bu sayede bekleme süresi kısalır ve siteniz daha akıcı hissedilir. Ama kasada gerçek zamanlı işlemler döner; ürün stoğu güncellenir, kullanıcı giriş yapar, kupon uygulanır. Yani her içerik aynı şekilde önbelleğe atılmaz. Bazısı günlerce saklanır, bazısı anlık kalır, bazıları ise hiç saklanmaz.

Statik ve Yarı-Dinamik İçerikler

Görseller, yazı tipleri, CSS/JS gibi statik dosyalar genelde güvenle uzun süre cache’de tutulur. HTML ise daha dikkat ister. Blog yazılarınız sık değişmiyorsa, HTML’yi kısa bir süreliğine saklamak iyi sonuç verir. WooCommerce tarafında ürün sayfaları bazen yarı-dinamiktir; kampanya saatleri, dinamik rozetler, stok göstergeleri gibi ayrıntılar değişebilir. Burada mantık basit: Çok oynayan kısımları orijinden, stabil olanları CDN’den verin.

Ölçeği Büyütmenin Sırrı

Yük altında nefes almanın iki yolu var: daha güçlü sunucular ve daha akıllı cache. İkisi bir arada en tatlı dengeyi verir. Sunucuyu iyileştirirken, CDN tarafında doğru önbellek ve edge kurallarıyla sık gelen içerikleri en önde tutarsınız. Böylece PHP ve veritabanına daha az iş düşer. Merak edenler için, arka tarafta makinenin kas gücünü planlamak adına WooCommerce kapasite planlama rehberi güzel bir eşlikçi olabilir.

Cache-Control Başlıkları: Ne Söylersek CDN Ne Anlar?

Basitçe: Max-Age, S-Maxage ve Arkadaşları

Tarayıcı ile CDN’e “bu dosyayı ne kadar saklayabilirsin?” diyen trafik ışıkları aslında başlıklardır. Cache-Control içindeki max-age, tarayıcıya konuşur; s-maxage ise paylaşımlı önbellek olan CDN’e. HTML sayfalar için kısa, statik dosyalar için uzun süreler vererek trafik yükünü güzelce dengeleyebilirsiniz. Üstüne bir de stale-while-revalidate kullanırsanız, ziyaretçi eski kopyayı anında görürken CDN arkada yenisini çekmeye devam eder. Sanki vitrindeki ürünü hemen gösterip depodan yenisini getirir gibi.

Public/Private, ETag ve Son Değiştirilme

HTML içeriklerde genellikle public işinizi görür; ama kullanıcıya özel sayfalarda private der ve önbelleğe alınmamasını istersiniz. Değişiklik takibi için Last-Modified veya ETag devreye girer. ETag bir çeşit parmak izi gibi düşünülür; içerik değişirse parmak izi de değişir. Bu yöntemler, CDN’in ve tarayıcının “yenilemeye değer mi?” sorusuna hızlı karar vermesine yardımcı olur. Daha derinine dalmak isterseniz, MDN üzerindeki Cache-Control başlığı sade bir referans niteliğinde.

HTML ile Statik Dosyalar Arasındaki Denge

Mesela şöyle düşünün: CSS ve JS’i uzun süre saklayıp isimlerine sürüm parametresi eklerseniz, güncelleme yaptığınızda herkes yeni sürüme geçer. Görseller için de benzer bir yöntem iyi çalışır. HTML’de ise kısa max-age ve biraz stale-while-revalidate tatlı bir ayardır. Çok sık güncellenen bir anasayfanız varsa, CDN’e düşük TTL verip sık yenilemesini, tarayıcıya ise biraz daha esnek davranmasını söyleyebilirsiniz. Karar hep şuna bakar: Ziyaretçiye en hızlı, en doğru içeriği nasıl sunarım?

WordPress ve WooCommerce’de Neyi Cache’lemeli, Neyi Bypass Etmeli?

Giriş Yapmış Kullanıcılar ve Avatar Gibi Küçük Ama Etkili Ayrıntılar

WordPress’te yönetici çubuğu görünen, giriş yapmış kullanıcıların sayfalarını cache’e koymak genelde yanlıştır. Çünkü her kullanıcıya özel küçük de olsa farklılıklar vardır. WooCommerce’de de sepet ve ödeme adımları, kullanıcı oturumları gibi alanlar hassastır. Bu yüzden “wordpress_logged_in_” gibi oturum çerezleri varsa HTML önbelleği devre dışı bırakmak gerekir. Aynı mantık, sepetle ilgili “woocommerce_cart_hash”, “woocommerce_items_in_cart” ve “wp_woocommerce_session_” gibi çerezlerde de geçerlidir. Bu çerezler tespit edildiğinde HTML’yi orijinden vermek, sorunları daha baştan keser.

Sepet, Ödeme ve Hesabım: Canlı Kalması Gerekenler

URL tarafında da benzer bir titizlik iyi sonuç verir. Sepet, ödeme ve hesabım sayfalarının HTML’sini önbelleğe atmak, kampanya saatinde hatalı toplamlar ve garip oturum sorunları doğurabilir. Bu sayfaları kapsayan desenleri edge kuralıyla “bypass” etmeniz yeterli olur. Ürün sayfalarında ise, stok göstergesi gibi öğeler sık değişiyorsa kısa TTL tercih edebilirsiniz. Bazı eklentiler ayrıca dinamik parçalar üretir; bu parçaların HTML içine gömülmediği, gerektiğinde ayrı istekle geldiği bir tasarım daha esnek çalışır.

Görseller, CSS/JS ve Yazı Tipleri

Burada işler keyifli. Versiyonlanmış CSS/JS dosyalarına uzun bir max-age ve s-maxage verebilirsiniz. Yazı tipleri ve büyük görseller için de benzer uzun TTL’ler genelde güvenlidir. CDN tarafında “dosya uzantısına göre” önbellek kuralı tanımlamak, yönetimi basitleştirir. Değişiklik anında yeni sürümleri devreye almak için dosya ismi veya sorgu parametresinde sürümleme stratejiniz olsun, gerisi yağ gibi akar.

Bu bölümdeki pratik düzenlemeleri adım adım görmek isterseniz, WordPress için CDN önbellek kurallarıyla uçtan uca hız yazısı uygulanabilir örneklerle güzel eşlik ediyor. Ayrıca arka uçta PHP-FPM, OPcache, Redis ve veritabanı ayarlarını sıkılaştırmak için sunucu tarafı optimizasyon rehberi ile CDN stratejisini birlikte düşünmek, her katmanda dengeli bir yapı kurmanızı sağlar.

Edge Kuralları: İnce Ayarların Kısa Yolu

Bypass on Cookie, Parametre Temizleme ve TTL Mantığı

Edge kuralları, “şu koşul varsa şöyle davran” demenin pratik yolu. Diyelim ki istek, giriş çerezi taşıyor; o zaman HTML’yi önbelleğe koyma. Başka bir senaryo: UTM gibi pazarlama parametreleriyle gelen sayfalar, içerik olarak aynı. Burada parametreleri yok sayıp aynı önbellek anahtarını kullanmak harikalar yaratır. Trafik dalgalarında nefes payı açar. Keza “preview=true” veya “add-to-cart” gibi URL ipuçları yakalandığında da bypass demek, tutarlı bir deneyim sağlar.

POST İstekleri, Başlıklar ve Önbellek Anahtarı

Form gönderen POST isteklerinde cache devreye girmez; bu iyi bir şeydir. GET isteklerinde ise bazı başlıkları anahtara dahil edip etmeme kararı önemlidir. Örneğin “Accept-Language” veya “Cookie” gibi başlıklar her ziyaretçide farklıdır; bunları anahtara dahil etmek, önbelleğin parçalanmasına yol açabilir. Çerez üzerinden koşul koyup HTML önbelleği sadece anonim kullanıcılar için etkin tutmak, hem basit hem etkilidir. CDN’in kendi dökümantasyonunda önbellek anahtarını yönetmek üzerine iyi pratikler bulabilirsiniz; mesela Cloudflare’ın cache davranışı hakkında kılavuzu fikir verir.

Hatalarda Sakin Kalmak: Stale-If-Error ve Grace Süreleri

Bazen orijin bir an sendeleyebilir. Tam o anda ziyaretçiye boş sayfa göstermek yerine “eski ama işe yarar” bir kopyayı sunmak çok kıymetli. stale-if-error ve benzeri esneklikler burada devreye girer. Bir başka püf noktası da, yayın yaparken kısa bir süreliğine CDN tarafında “no-cache” demek yerine, TTL’i ufak bir aralığa çekip değişikliğin yayılmasını beklemek. Böylece yayın sonrası trafik daha yumuşak akar, riskleriniz azalır.

Uygulamada Adım Adım: Test, Ölçüm ve Sorun Giderme

Tarayıcı Araçları ve Basit Başlık Kontrolleri

İlk iş, hangi isteğin nereden geldiğini görmek. Tarayıcı geliştirici araçlarında ağ sekmesine bakıp yanıt başlıklarını inceleyin. “hit”, “miss”, “bypass” gibi ifadeler genellikle CDN yanıtına işlenir. Küçük bir deneme için komut satırında başlıklara göz atmak da iş görür. Burada amaç, hangi kuralın ne sonuç verdiğini, hangi sayfaların cache’i doldurduğunu anlamaktır. Küçük bir değişiklik yapıp etkisini gözlemek, ayarları sezgisel hale getirir.

Ölçtüğün Kadar İyisin

Sayfa açılış süreleri, ilk bayt süresi ve görsellerin yüklenme hissi… Bunlar, ziyaretçinin aklındaki “bu site hızlı” kararını şekillendirir. CDN ile doğru önbellek stratejisi kurduğunuzda, ilk anlamlı boyama dediğimiz o “aha” anı hızlanır. Arka tarafta veritabanı ve PHP yükü azalır. Bunu hissetmenin basit yollarından biri, trafik dalgası başladığında kaynak kullanımını izlemektir. Kaynakların daha sakin kaldığını görürseniz, doğru yoldasınız demektir.

Yayın ve Temizleme Rutinleri

Yazı yayınladığınızda, ürün bilgisini güncellediğinizde veya temada değişiklik yaptığınızda CDN önbelleğini tamamen boşaltmak yerine “gerekli kadar” temizlemek iyi bir alışkanlıktır. Örneğin yalnızca ilgili URL’leri, etiket veya yol bazında temizlemek mümkünse bunu tercih edin. Böylece trafiğin tamamını yeniden ısıtmak zorunda kalmazsınız. WordPress dünyasına yeni adım atanlar için WordPress rehberindeki basit önbelleğe alma önerileri başlangıç bakışı sunar.

WooCommerce’e Özel İnce Ayarlar: Sepetler Mutlu, Kampanyalar Akıcı

Dinamik Olanı Koru, Statik Olanı Uzağa Taşı

WooCommerce’de sepet, ödeme, “Hesabım” gibi sayfalar daima canlı kalmalı. Burada edge kuralı ile çerez koşullarını tespit etmek kritik. “woocommerce_items_in_cart” veya “wp_woocommerce_session_” gibi sinyaller varsa HTML’ye dokunmayın. Ürün detaylarında ise küçük bir piyano ayarı yeterli: çok sık güncellenen fiyat/indirim gibi öğeler varsa kısa bir TTL, daha stabil içeriklerde ise biraz daha cömert davranabilirsiniz. Kampanya saatinde yoğun trafik aldığınızda bu fark, sunucunun nefes almasını sağlar.

Parametre Karmaşası ve Pazarlama Etiketleri

UTM parametreleri işin pazarlama kalbi. Ama önbellek tarafında aynı sayfayı yüzlerce farklı anahtara bölmek istemeyiz. Edge kuralından “utm_” ile başlayan parametreleri göz ardı diyerek aynı sayfanın tek bir önbellek anahtarında yaşamasını sağlayabilirsiniz. Bu, hem CDN hit oranını yükseltir hem de ısıtma dediğimiz süreç daha stabil ilerler. Yan etkileri azaltmak için yayın öncesi küçük bir pilot sayfada deneme yapmak iyi bir fikirdir.

Arka Tarafı Unutmadan

Önbellek tek başına kahraman değildir; arka tarafta da motoru güçlendirmek gerekir. PHP süreçleri, OPcache, Redis ve veritabanı ayarlarını bir bütün olarak düşünün. Uygulamada bunları nasıl ayarlayacağınızı merak ediyorsanız, PHP-FPM, OPcache, Redis ve MySQL ile sunucu tarafı optimizasyon yazısı, CDN stratejinizi tamamlayan harika bir rehberdir.

Güvenlik, SEO ve Küçük Püf Noktaları

Özel Veriler, Özel Kurallar

Kullanıcıya özel veriler söz konusuysa, mümkün olduğunca bu alanları cache dışında bırakın. “Private” işaretleri ve çerez koşullarıyla HTML’nin yanlış kopyalanmasının önüne geçebilirsiniz. 404 ve 301 gibi yanıtların da makul bir süre önbelleğe alınması sayfa geçişlerini hızlandırır; ama 404’ler uzun süreli tutulmamalı ki yeni oluşturduğunuz sayfalar hızlıca görünür olsun. Güvenlikle ilgili başlıkları ayrı bir çerçevede ele almak isterseniz, HTTP tarafındaki iyi uygulamalar her zaman işinizi kolaylaştırır.

SEO’ya Kısa Bir Selam

Arama motorları hızdan hoşlanır ama tazelik de önemlidir. HTML için kısa bir TTL, görseller ve statikler için uzun bir TTL genellikle iyi bir uzlaşmadır. Canonical ve yönlendirme akışını tutarlı tutarsanız, CDN katmanı üstünde de her şey uyumlu ilerler. Bazı CDN’ler “cache key” üzerinde küçük oynamalara izin verir; bu sayede aynı içeriği gösteren farklı URL desenlerini birleştirerek daha temiz bir önbellek yapısı kurabilirsiniz. Detayları sağlayıcınızın dökümantasyonunda bulmak mümkün; örneğin Cloudflare dökümanları pratik örnekler sunar.

Yan Etkileri Erken Yakalamak

Özellikle kampanya günleri öncesinde staging ortamında senaryoları çalıştırmak, en iyi kurtarıcıdır. Sepete ekle, kupon uygula, giriş yap, çıkış yap, ödeme dene… Her akışta beklenen davranışı gördüğünüzden emin olun. Edge kuralı küçük bir hata ile çok şey değiştirebilir. Bir de küçük hatırlatma: Yayın saatlerinde, önemli sayfalar için CDN’de kontrollü bir temizleme yapmak, panikle toplu purge etmekten daha iyi sonuç verir.

Kapanış: Sakin, Tutarlı ve Ölçülebilir Bir Önbellek Düzeni

Bir mağazayı düzenler gibi düşünün: Vitrin şık ve ulaşılabilir, kasa hızlı ve güvenli. CDN önbellekleme ile Cache-Control başlıkları ve edge kuralları doğru konuştuğunda, WordPress ve WooCommerce siteniz trafiği daha rahat karşılar. HTML’yi kısa süreli tutmak, statikleri uzun saklamak, giriş yapmış kullanıcıları ve sepet/ödeme adımlarını bypass etmek; işin özünü bu birkaç cümlede toplayabiliriz. Üstüne parametre temizliği ve çerez koşulları gelince, sistem profesyonel bir düzene kavuşur.

Pratik bir ipucu seti bırakarak bitireyim: Yayın öncesi staging’de test edin, canlıda kademeli temizlik yapın, ölçümleri takip edin ve sorun gördüğünüz alanlarda TTL’leri küçük adımlarla ayarlayın. Eğer mağazanız büyüyor ve arka plandaki kapasiteyi planlamak istiyorsanız, ölçek planlama üzerine rehberi gözden geçirmek iyi fikir. CDN tarafındaki pratik kural örneklerine de yeniden bakmak isterseniz, WordPress için CDN önbellek kurallarıyla uçtan uca hız yazısı adım adım ilerliyor. Umarım bu yazı, bir sonraki kampanya sabahı kahvenizi keyifle yudumlarken sayfalarınızın yağ gibi akmasına yardım eder. Bir dahaki yazıda görüşmek üzere.

Sıkça Sorulan Sorular

Genelde sepet, ödeme ve hesabım gibi canlı akışa sahip sayfaların HTML’sini cache’e koyma. Giriş yapmış kullanıcıların sayfalarında da önbelleği bypass etmek daha güvenli.

HTML için kısa bir süre, statik dosyalar için uzun süre ver. s-maxage CDN’e, max-age tarayıcıya konuşur. Gerekirse stale-while-revalidate ile kullanıcıyı bekletmeden yenileme yap.

Aynı sayfayı farklı anahtarlara böldüğü için hit oranını düşürür. Edge kuralıyla utm_ parametrelerini yok sayarak tek bir cache anahtarında birleştirmek pratik bir çözümdür.