Merhaba arkadaşlar, bugün sizlere LiteSpeed Cache (LSCache) kullanırken özellikle dinamik sitelerde hayat kurtaran, gelişmiş kural yönetiminden bahsedeceğim. LSCache çok güçlü ama "her şeyi cache'le" mantığıyla çalıştığınızda, giriş yapmış kullanıcılar, sepetteki ürünler veya kişiselleştirilmiş içerikler sorun çıkarabiliyor. Bu rehberde, cache'i akıllıca yöneterek hem hızı koruyup hem de bu dinamik öğeleri doğru şekilde nasıl ele alacağımızı adım adım anlatacağım.
Cache Dışlama Kuralları Neden Önemli?
Cache mekanizması, bir sayfanın tamamını statik olarak saklamaya çalışır. Ancak, "Merhaba, Ahmet!" yazan bir kullanıcı menüsü veya sepetteki ürün sayısı gibi her kullanıcıda değişen bölümler varsa, bu sayfaları olduğu gibi cache'lemek büyük hatadır. İşte bu noktada dışlama kuralları devreye giriyor. Benim sunucularda genelde ilk yaptığım iş, bu dinamik alanları tespit edip cache dışında bırakmak oluyor.
Kullanıcıya Özel İçeriği Cache'ten Dışlama
WordPress eklentisi veya doğrudan .htaccess dosyası üzerinden, belirli çerez (cookie) veya oturum (session) durumlarında cache'i by-pass edebiliriz. En yaygın senaryo, bir kullanıcı giriş yaptığında ona özel içeriği göstermektir.
Örneğin, WordPress'te LSCache eklentisinin "Dışlama" ayarlarına aşağıdaki gibi kurallar ekleyebilirsiniz. Bu, oturum açmış kullanıcılar için sayfaların önbelleğe alınmasını engeller:
Eğer belirli bir sayfayı veya URL yapısını tamamen cache dışında bırakmak isterseniz, /etc/httpd/conf.d/lscache.conf veya .htaccess dosyanıza şu kuralı ekleyebilirsiniz:
WooCommerce için Kritik Cache Ayarları
WooCommerce, sepetteki ürünler, ödeme sayfaları, hesap alanı gibi son derece dinamik bölümlerden oluşur. Şu ayara çok dikkat etmelisiniz: Bu sayfalar asla cache'lenmemeli! Neyse ki LSCache eklentisinin WooCommerce entegrasyonu bu işi büyük oranda otomatik halleder. Ancak yine de kontrol etmekte fayda var.
Eklenti ayarlarında "WooCommerce" sekmesini bulun ve aşağıdaki seçeneklerin aktif olduğundan emin olun:
- "Sepet Sayfasını Önbellekten Hariç Tut"
- "Hesap Sayfasını Önbellekten Hariç Tut"
- "Ödeme Sayfasını Önbellekten Hariç Tut"
Eğer özel bir tema veya eklenti kullanıyorsanız, /wp-content/themes/your-theme/functions.php dosyanıza aşağıdaki gibi bir filtre ekleyerek, WooCommerce ile ilgili tüm çerezlerde cache'i devre dışı bırakabilirsiniz:
Dikkat Edilmesi Gerekenler ve Test
Kuralları yazdıktan sonra asla test etmeden bırakmayın. Bir tarayıcı eklentisi (LiteSpeed Cache Debug Header'ı gösteren) veya terminalden curl -I komutu ile cache durumunu kontrol edin.
Ayrıca, çok fazla dışlama kuralı eklemenin cache oranınızı (hit ratio) düşüreceğini unutmayın. Sadece gerçekten gerekli olan sayfa ve dinamik öğeleri dışlayın.
Sonuç ve Öneriler
LSCache'i doğru yapılandırmak, özellikle WooCommerce gibi dinamik bir sistemi çalıştırırken, sitenizin hem yıldırım hızında kalmasını hem de kullanıcı deneyiminin bozulmamasını sağlar. Benim sunucularda genelde ilk kurulumdan sonra bu dışlama kurallarını ve WooCommerce entegrasyonunu kontrol ederim.
Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı senaryolar için (örneğin LearnDash, Membership eklentileri) özel kurallarınız var mı? Deneyimlerinizi paylaşın veya takıldığınız bir nokta olursa aşağıya yazın, birlikte çözelim.
Cache mekanizması, bir sayfanın tamamını statik olarak saklamaya çalışır. Ancak, "Merhaba, Ahmet!" yazan bir kullanıcı menüsü veya sepetteki ürün sayısı gibi her kullanıcıda değişen bölümler varsa, bu sayfaları olduğu gibi cache'lemek büyük hatadır. İşte bu noktada dışlama kuralları devreye giriyor. Benim sunucularda genelde ilk yaptığım iş, bu dinamik alanları tespit edip cache dışında bırakmak oluyor.
WordPress eklentisi veya doğrudan .htaccess dosyası üzerinden, belirli çerez (cookie) veya oturum (session) durumlarında cache'i by-pass edebiliriz. En yaygın senaryo, bir kullanıcı giriş yaptığında ona özel içeriği göstermektir.
Örneğin, WordPress'te LSCache eklentisinin "Dışlama" ayarlarına aşağıdaki gibi kurallar ekleyebilirsiniz. Bu, oturum açmış kullanıcılar için sayfaların önbelleğe alınmasını engeller:
Kod:
# Kullanıcı giriş yapmışsa cache'i atla
RewriteCond %{HTTP_COOKIE} !wordpress_logged_in_[^=]+=([^%]+) [OR]
RewriteCond %{HTTP_COOKIE} wp-postpass_[^=]+=([^%]+)
RewriteRule . - [E=Cache-Control:no-cache]
Eğer belirli bir sayfayı veya URL yapısını tamamen cache dışında bırakmak isterseniz, /etc/httpd/conf.d/lscache.conf veya .htaccess dosyanıza şu kuralı ekleyebilirsiniz:
Kod:
CacheDisable /uye-paneli/
CacheDisable /sepetim
WooCommerce, sepetteki ürünler, ödeme sayfaları, hesap alanı gibi son derece dinamik bölümlerden oluşur. Şu ayara çok dikkat etmelisiniz: Bu sayfalar asla cache'lenmemeli! Neyse ki LSCache eklentisinin WooCommerce entegrasyonu bu işi büyük oranda otomatik halleder. Ancak yine de kontrol etmekte fayda var.
Eklenti ayarlarında "WooCommerce" sekmesini bulun ve aşağıdaki seçeneklerin aktif olduğundan emin olun:
- "Sepet Sayfasını Önbellekten Hariç Tut"
- "Hesap Sayfasını Önbellekten Hariç Tut"
- "Ödeme Sayfasını Önbellekten Hariç Tut"
Eğer özel bir tema veya eklenti kullanıyorsanız, /wp-content/themes/your-theme/functions.php dosyanıza aşağıdaki gibi bir filtre ekleyerek, WooCommerce ile ilgili tüm çerezlerde cache'i devre dışı bırakabilirsiniz:
PHP:
// WooCommerce çerezleri tespit edildiğinde cache'i atla
add_action('litespeed_control_set_nocache', 'woocommerce_nocache');
function woocommerce_nocache() {
if ( is_wc_endpoint_url() || is_cart() || is_checkout() || is_account_page() ) {
do_action('litespeed_control_set_nocache', true);
}
}
Kuralları yazdıktan sonra asla test etmeden bırakmayın. Bir tarayıcı eklentisi (LiteSpeed Cache Debug Header'ı gösteren) veya terminalden curl -I komutu ile cache durumunu kontrol edin.
Bash:
# Örnek bir curl komutu ile cache header'larını kontrol etme
curl -I https://siteniz.com/sepetteki-urun
# Çıktıda "X-LiteSpeed-Cache: hit" görürseniz, sayfa hala cache'leniyor demektir, kural çalışmamıştır.
Ayrıca, çok fazla dışlama kuralı eklemenin cache oranınızı (hit ratio) düşüreceğini unutmayın. Sadece gerçekten gerekli olan sayfa ve dinamik öğeleri dışlayın.
LSCache'i doğru yapılandırmak, özellikle WooCommerce gibi dinamik bir sistemi çalıştırırken, sitenizin hem yıldırım hızında kalmasını hem de kullanıcı deneyiminin bozulmamasını sağlar. Benim sunucularda genelde ilk kurulumdan sonra bu dışlama kurallarını ve WooCommerce entegrasyonunu kontrol ederim.
Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı senaryolar için (örneğin LearnDash, Membership eklentileri) özel kurallarınız var mı? Deneyimlerinizi paylaşın veya takıldığınız bir nokta olursa aşağıya yazın, birlikte çözelim.