Cache-Control HTTP Headers Nedir?

Cache-Control HTTP üstbilgisinin ne olduğu ve WordPress sitenizle nasıl çalıştığı konusunda kafanız mı karışık?

Özetle, önbellek kontrolü, web sitenizdeki resimleriniz gibi belirli statik kaynaklar için tarayıcı önbellekleme politikalarını belirten bir HTTP üst bilgisidir. Kulağa biraz karmaşık geliyor – biliyoruz! Okumaya devam ederseniz, önbellek kontrolü konusunu daha ayrıntılı olarak ele alacağız.

Bu makalede, önbellek kontrolünün ne olduğunu ve web sitenizdeki davranışı nasıl etkilediğini açıklayacağız. Ancak, önbellek kontrolü başlığına girmeden önce, tarayıcı önbellekleme kavramını açıklamamız gerekir.

Tarayıcı Önbellekleme Nedir?

Birisi web sitenizi ilk kez ziyaret ettiğinde, web tarayıcısının sayfanızı oluşturmak için her bir dosyayı istemesi ve indirmesi gerekir. Ancak, sonraki ziyaretlerde, onları her ziyaretteki her bir kaynağı talep etmeye ve indirmeye zorlamak mantıklı değildir.

Örneğin, logonuz muhtemelen her bir sayfaya yüklenir, ancak değişmez. Bir ziyaretçinin tarayıcısını her sayfa yüklemesi için logonuzu tekrar indirmeye zorlamak, sitenizi yavaşlatacak kaynak israfıdır.

Tarayıcı önbelleğe alma özelliği, bir ziyaretçinin yerel bilgisayarındaki belirli kaynak türlerini kaydederek bu senaryodan kaçınmanıza olanak tanır. Ardından, bir ziyaretçinin tarayıcısı bu kaynağı yeniden indirmek yerine yerel olarak yükleyebilir, bu da sitenizin yükleme sürelerini hızlandıracak ve ziyaretçileriniz için daha iyi bir deneyim sağlayacaktır. Bu nedenle genellikle “Leverage browser caching”  seçeneğini GTmetrix ve Pingdom gibi araçlarda yaygın bir öneri olarak görürsünüz.

Tarayıcı önbelleğe almayı etkinleştirmek için, web sunucunuzu, ziyaretçilerin tarayıcılarına hangi dosya türlerini saklayacaklarını ve yeniden indirmeden önce ne kadar süreyle saklayacaklarını söyleyecek şekilde yapılandırmanız gerekir.

Örneğin, sunucunuzu aşağıdakileri söyleyecek şekilde yapılandırabilirsiniz:

“JPEG dosyalarını bir yıl saklayın, ancak PNG dosyalarını yalnızca bir ay saklayın”.

Temel olarak, ziyaretçilerin tarayıcılarının belirli içeriği ne kadar süreyle saklaması gerektiğine ilişkin son kullanma tarihleri ​​belirlersiniz.

Son kullanma tarihleri ​​neden eklenmeli? Çünkü ziyaretçilerinizin sayfanızın en son sürümünü almaya devam etmesini sağlamak istiyorsunuz. Bir son kullanma tarihi belirleyerek, güncellenmiş bir deneyim sağlamak için ziyaretçilerin ilgili kaynakları periyodik olarak yeniden indirmelerini sağlarsınız.

Önbellek Kontrolü Nedir?

Önbellek kontrolü, bu tarayıcı önbellekleme davranışını kontrol etmek için ana yöntemlerden biridir, diğeri ise süre üstbilgisidir.

Temel olarak, önbellek kontrolü, bir ziyaretçinin tarayıcısının yerel önbelleğinden bir kaynak yükleyip yüklemeyeceğini veya kaynağı indirmek için sitenizin web sunucusuna bir istek gönderip göndermeyeceğini kontrol etmek için bu “sona erme” tarihlerini ayarlamanıza olanak tanır.

Her bir kaynağın nasıl davrandığı üzerinde size çok fazla kontrol sağlar ve ayrıca içeriğinizi kimlerin önbelleğe alabileceğini kontrol etmenizi sağlar. Örneğin, bir ziyaretçinin tarayıcısının belirli bir görüntüyü önbelleğe alabileceğini, ancak bir CDN’nin (Cloudflare gibi) önbelleğe alamayacağını söyleyebilirsiniz.

HTTP Üstbilgileri Nedir?

Köprü Metni Aktarım Protokolü’nün kısaltması olan HTTP, istemcilerin ve sunucuların nasıl iletişim kurduğunu yönetir. Bizim amaçlarımız doğrultusunda, bir müşteri ziyaretçinin web tarayıcısı ve sunucu WordPress sitenizin sunucusudur.

İstemci bir dosyaya ihtiyaç duyduğunda, sunucuya bir istek gönderir ve sunucu istemciye bir yanıt gönderir.

Örneğin, web sitenizde bir resim varsa, bir ziyaretçinin tarayıcısı önce bu resim sunucudan istenir ve ardından sunucu resim dosyasıyla yanıt verir. Daha sonra tarayıcı, CSS stil sayfaları, JavaScript vb. dahil olmak üzere sitenizdeki her kaynak için aynı işlemi tekrarlar.

HTTP üstbilgileri, istemcilerin veya sunucuların bu istemci istekleri ve sunucu yanıtlarıyla ek bilgi göndermesine izin verir. Önbellek kontrolü bunlardan biri olan farklı HTTP üstbilgisi türleri vardır.

Çoğu modern web tarayıcısı, bir web sayfasının yüklenmesiyle ilgili her istek ve yanıtla ilişkili HTTP başlıklarını görmenizi sağlayan geliştirici araçları içerir.

Chrome’da şunları yapabilirsiniz:

  1. Geliştirici araçlarını açın (CTRL + Üst Karakter + I)
  2. Ağ sekmesine gidin
  3. Sayfayı yenileyin
  4. Analiz etmek istediğiniz kaynağı seçin
  5. Üstbilgiler sekmesine bakın

Önbellek denetiminin bu başlıklardan biri olduğunu görebilirsiniz, ancak ek bilgileri ileten başka birçok başlık da vardır. HTTP üstbilgileri her iki yönde de gidebilir. Yani, web tarayıcınız sunucuya yaptığı isteğe HTTP üstbilgileri ekleyebilir ve sunucu tarayıcıya gönderdiği yanıta HTTP üstbilgileri ekleyebilir. HTTP üstbilgileri anahtar – değer çiftlerinden oluşur. “Anahtar”, iki nokta üst üste işaretinin solunda yer alırken, “değer”, sağ tarafa doğru olan bölümdür.

Cache-Control Nasıl Çalışır?

Tamam, bu noktada tarayıcı önbelleğe almanın ne olduğunu biliyorsunuz. Önbellek kontrolünün tarayıcı önbellekleme davranışını kontrol etmenin bir yolu olduğunu ve önbellek kontrolünün bir ziyaretçinin tarayıcısı web sunucunuzla iletişim kurduğunda iletilen bir HTTP başlığı olduğunu da biliyorsunuz.

Şimdi, önbellek kontrolünün gerçekte nasıl çalıştığına ve tarayıcı önbellekleme davranışını kontrol etmek için kullanabileceğiniz farklı direktiflere bakalım.

Yukarıda öğrendiğiniz gibi, önbellek kontrolü şuna benzer bir anahtar / değer çiftidir:

cache-control: max-age=31536000

Bu örnekte, yönerge max-age = 31536000’dir, ancak kullanabileceğiniz başka önbellek denetimi yönergeleri vardır ve virgül kullanarak birden çok yönerge birleştirebilirsiniz.

En yaygın önbellek kontrolü yönergelerini inceleyelim.

cache-control: max-age=<seconds>

Max-age yönergesi, tarayıcının getirilen kaynağı yeni bir kaynak indirmeden önce ne kadar süre boyunca yeniden kullanabileceğini tanımlar. Max-age sayısı saniye cinsindendir ve istek yapılır yapılmaz başlar. Örnek olarak:

cache-control: max-age=31536000

Bu örnekte yönerge, bir ziyaretçinin tarayıcısına, önbelleğe alınmış kaynağı orijinal istek tarihinden itibaren bir yıl boyunca kullanmasını söylüyor. Bu önerge hem istemci hem de sunucu tarafından kullanılabilir.

cache-control: public
cache-control: private

Genel ve özel yönergeler, hangi tür istemcilerin kaynakları önbelleğe alabileceğini denetleyen iki karşıt direktiftir.

Genel yönerge, kaynağın herhangi bir önbellek tarafından saklanabileceği anlamına gelir. Örneğin, bir ziyaretçinin tarayıcısı, CDN vb.

Özel yönerge ise kaynağın ziyaretçinin tarayıcısı tarafından önbelleğe alınabileceği, ancak CDN gibi diğer ara önbellekler tarafından önbelleğe alınamayacağı anlamına gelir.

Özel yönergeyi, kullanıcı bilgilerinin bir CDN tarafından önbelleğe alınmasını istemediğiniz, ancak ziyaretçinin tarayıcısının önbelleğe almasını sağlayan içerikler için kullanırsınız.

Genel ve özel yönergeler sunucu tarafından yalnızca HTTP yanıtında kullanılır.

cache-control: no-cache

no-cache, adından dolayı biraz kafa karıştırıcıdır. Herhangi bir önbelleğin yanıtı depolamasına izin verir, ancak saklanan yanıt kullanmadan önce kaynak sunucu ile doğrulamadan geçmelidir. Yani, bir ziyaretçinin tarayıcısının önbelleğe alınmış kaynağı kullanmadan önce kaynağın değişmediğinden emin olması gerekir. Bu yönerge, hem istemci hem de sunucu tarafından kullanılabilir.

cache-control: no-store

no-store yönergesi, hem tarayıcıların hem de ara önbelleklerin kaynağı depolamasına izin vermez. İstemcinin her sayfa yüklemesi için bu varlığı her zaman sunucudan istemesi gerekir.

Genellikle bunu, bankacılık bilgileri gibi asla önbelleğe alınmasını istemediğiniz çok hassas bilgiler için kullanırsınız. no-store yönergesi hem istemci hem de sunucu tarafından kullanılabilir.

cache-control: max-stale[=<seconds>]

Sunucunun HTTP yanıtında kullanılabilen diğer yönergelerin aksine, max-stale yönergesi yalnızca bir istemcinin sunucuya olan isteğinde kullanılır.

Max-stale yönergesi bir sunucuya, istemcinin tazelik ömrünü aşan bir yanıtı max-stale yönergesindeki sayı ile (saniye cinsinden) kabul etmek istediğini bildirir.