İçeriğe geç

Nginx ile Statik İçerik Cache Ayarları

Büyüyen internet ile birlikte kullanıcı kitlesi ve buna bağlı olarak sunulan içerikler artıyor. Hal böyle olunca ziyaretçi kitlesine sunulan hizmetin daha iyi olması hatta en hızlı şekilde sunulabilmesi için geliştiriciler uygulamalarına daha itina ve özen gösteriyor.

Şahsımın yönettiği bir web projesinde yaklaşık günlük olarak 1500 kişinin ziyaret ettiği bir wordpress sitesine bir kaç ufak düzenleme ile ciddi derecede hız kazandırdım. Böylelikle ziyaretçiler siteyi ziyaret ettiğinde içerikler çok hızlı bir şekilde görüntülenip beklemelerinin önüne geçtim. Bu da seo açısından bana + puan olarak dönüş sağladı uzun zaman sonra.

Bu yazıda kendi projeme uyguladığım nginx proxy cache kurulumunu wordpress örneği üzerinden dilim döndüğü kadarıyla anlatacağım. Yanlış veya eksik gördüğünüz noktaları bildirirseniz bu yazının daha faydalı olmasını sağlarsınız 🙂

Verdiğim örnekler Debian 7, Nginx 1.10 versiyonuna aittir.

Config Düzenlemeleri

/etc/nginx/sites-available/hostname nginx config dosyamızı açıyoruz.

server bloğunun üstüne aşağıdaki tanımlamaları yapıyoruz.

Yaptığımız bu tanımlama;

  • fastcgi_cache_path: Nginx cachelerinin yer alacağı klasör ve bu cachelere ait bazı parametreler belirleniyor.
  • keys_zone: Cache’in ismi. Farklı sitelere ait cacheler ile karışmaması adına verilen isim.
  • 100m: Cache’in geçerlilik süresi.
  • inactive: Hiç kullanılmadığında geçerliliğini yitirecek olan cache’in süresi.
  • fastcgi_cache_key: Gelen isteklerin oluşturacağı cache ismi. Burada değişken isimleri kullanıldığı için her istek ayrı bir cache olarak yazılacaktır.

Server bloğunun içine aşağıdaki tanımlamayı yapıyoruz. Bu tanımlama ile cache yapılmasını istemediğimiz zamanlarda değerini yaparak cache girmesini engellemiş oluyoruz.

Cache Girmemesi Gereken Durumlar

POST isteklerini cache’e girmesini istemiyorsak;

Query String ifadelerinin olduğu sayfaların cache girmesini önlemek istiyorsak;

Wordpress’e özel olarak, Ajax ve wp-admin alanlarının cache’e girmemesi için;

Location Düzenlemesi

Bir PHP servisi çalıştırdığınızı düşünürsek php-fpm için oluşturduğunuz location bloğu için aşağıdaki satırları eklemeniz gerekmektedir.

Sayfalar cache’den mi geliyor?

Bunu öğrenmek için aşağıdaki header tanımlamasını yaparak sayfanızın cache ile gelip gelmediğini görebilirsiniz.

Bu ayarları yaptıktan sonra nginx reload ederek cache ile içeriklerinizi sunabilirsiniz. 🙂

Peki bu işlemleri yaptıktan sonra olası bir durumda cache silmemiz gerekti ne yapacağız?

Şu anda kullandığım yöntem tüm sitenin önbelleğini temizlemek. Bunun için yukarıda tanımladığımız cache folder’ını silmek. Ancak bu işlemi daha performanslı ve stabil bir şekilde yapmak için aşağıda bulunan nginx döküman sayfasını takip edebilirsiniz. Net bir bilgi olmamakla beraber purge yapabilmek için nginx plus sahibi olmanız gerekiyor. Fakat aşağıda normal bir nginx için yapılan ayarları görebilirsiniz.

Nginx Purge

Son olarak yazıyı hazırlarken kendi wordpress bloğuma yaptığım configleri kullanarak hazırladım. Bu nedenle eksik veya hatalı olan noktaları yazarak bilgilendirme yapmanız beni memnun edecektir.

Kategori:Yazılım Teknolojileri
  • Gizli Bir Hayran

    yazı çok güzel olmuş, harika olmuş. Lakin öyle değildir.

    • Çok faydalı bir paylaşımda bulundunuz, teşekkürler.

  • Kırımlı ismail

    peki tırnakları kaldırdıysak ve çalışmıyorsa ne yapmalıyız.

    • Nginx loglarına bakabilirsiniz. IP adresinize baktığımda aynı networkte gözüküyoruz dilerseniz yanıma gelin beraber bakalım 🙂