HTTP Cache Kullanımı ve Yönetimi

HTTP, header kullanımına dayalı bir protokoldür ve cache yönetimi de headerlar üzerinden gerçekleştirilen bir işlemdir. Cache-Control header’ı alabildiği birçok değerle bu işlemin temelini oluşturur. Cache-Control’ün yanı sıra Etag, Last-Modified ve Vary de cache sistemi için kullanılır.

MerlinCDN orijin sunucunuzdan gelen Cache-Control header değerlerini kullanarak ya da Page Rules özelliğiyle üstüne yazmak istediğiniz değerler ile cache sistemini kontrol eder. Bu iki seçenek farklı içerikler için hibrit olarak kullanılabilir.

 

Cache Control Header Değerleri

Cache yönetimini sağlamak için Cache-Control header’ı birçok değer alabildiği gibi aynı anda birden fazla değer de alabilir.

No-store

Bu içerik saklanamaz. Bütün istekler orijin sunucusu tarafından yanıtlanır.

No-cache

Bu içerik saklanabilir ancak doğrulanmadan servis edilemez. Bütün istekler için orijin sunucusuna bir doğrulama isteği gönderilir.

Private and Public

Private değeri paylaşımlı cache katmanını atlar. İçerik sadece kullanıcının tarayıcısında saklanabilir.

Public değeri tüm katmanlarda saklanmaya izin verir. Paylaşımlı cache katmanı ve tarayıcı içeriği saklayabilir. Eğer herhangi bir değer belirtilmediyse (no cache, no-store, private ya da public) public olarak kabul edilir.

Max-age

Bu değer private ve public değerleriyle beraber cache ömrünü belirtmek için kullanılır. İçerik değerde belirtilen süre (saniye olarak) kadar saklanır. Örnek kullanım:

Cache-Control: public, max-age=300

S-max-age

max-age gibi bu değer de cache ömrünü belirtir ancak s-max-age sadece paylaşımlı cache katmanları için bu değeri belirler. max-age ile beraber kullanılarak tarayıcı ve ara katmandaki cache süresini ayrı ayrı belirleyebilirsiniz. Örnek kullanım:

Cache-Control: public, max-age=300, s-max-age=6000

İçerik tarayıcıda 300 saniye saklanırken paylaşımlı cache katmanında ise 6000 saniye saklanır.

Must-revalidate

Bu değer cache ömrü bittiğinde kullanılır. Cache süresi bittikten sonra içerik servis edilebilir ve servis edildikten sonra doğrulanabilir veya güncellenebilir. Eğer must-revalidate değeri varsa içerik doğrulanmadan kullanıcıya servis edilemez.

Proxy-revalidate

Must-revalidate değerine benzer olarak doğrulama gerekliliğini belirtir ancak proxy-revalidate doğrulama zorunluluğunu sadece paylaşımlı cache tarafında sağlar. Yerel cache katmanları bu değerden etkilenmez.

No-transform

Bu değer orijinden gelen yanıtın (depolama ve yavaş bağlantı sorunları için veri minimizasyonu gibi değişikler) ve headerlarının (Content-Encoding, Content-Range veya Content-Type) değiştirilemeyeceğini belirtir.

Stale-while-revalidate

Bu değer, cache ömrü bittiğinde kullanılır. Bu değer, içerik doğrulandığı sırada istemciye bayat cache servis eder. Süre değeri (saniye olarak) bayat cache'in servis edileceği süreyi gösterir.

Stale-if-error

Bu değer, cache ömrü bittiğinde kullanılır. İçerik doğrulandığı sırada bir sorun oluşursa, istemciye bayat cache verilecektir. Süre değeri (saniye olarak) bayat cache'in servis edileceği süreyi gösterir.

 

Pragma

Cache-Control header’ı HTTP/1.1 ile kullanılmaya başlandı. HTTP/1.0 versiyonunda cache yönetimi için Pragma kullanılır. Cache-Control ile karşılaştırıldığında, Pragma çok daha ilkel kalmakta ve cache üzerinde çok az bir yönetim sağlamaktadır. Pragma sadece no-cache değeri alabilir ve bu değer Cache-Control no-store ile aynı konfigürasyonu sağlar.

No-cache

Bu içerik saklanabilir ancak doğrulanmadan servis edilemez. Bütün istekler için orijin sunucusuna bir doğrulama isteği gönderilir.

Pragma, Cache-Control ile aynı işlevsellikte değildir bu yüzden sadece HTTP/1.0 geriye dönük uyumluluk için kullanılmalıdır.

 

Doğrulama

Doğrulama süreci içeriğin değişip değişmediğini kontrol eder. Cache ömrü bittikten sonra orijine içeriğin değişip değişmediğini kontrol etmek amaçlı bir istek gönderilir. Orijin sunucusu eğer içerik değiştiyse yenilenen içeriği gönderir eğer değişmediyse sadece değişmediğini belirtir. Doğrulama süreci içeriğin kendisinin gönderilmesini önlediği için bant genişliğinde tasarruf sağlar.

 

Etag Header Değerleri

Etag doğrulama işlemi için kullanılan bir HTTP header’ıdır. Bu header değeri her bir içeriğe özgündür ve içerikte bir değişiklik olduğunda değişir. Doğrulama işlemi için orijin sunucusuna If-None-Match header’ına Etag değeri atayarak bir istek gönderilir. Eğer içerik değişmemişse sunucu içeriği göndermeden 304 (Not Modified) koduyla bir yanıt verir (bant genişliğinden tasarruf) ve cache ömrü yenilenir.

 

Last Modified Header Değerleri

Last Modified da Etag gibi doğrulama için kullanılır. Last-Modified içeriğin değiştiği tarihi belirtir. Saklanan içeriğin son değiştiği tarih ve orijindeki içeriğin son değiştiği tarih karşılaştırılarak doğrulama işlemi gerçekleştirilir. Orijin sunucusuna If-Modified-Since header’ına Last-Modified değeri atanarak istek atılır. Eğer değerler eşleşmezse sunucu içeriği gönderir, eğer içerik değişmediyse 304 HTTP koduyla yanıt verir.

 

Age Header Değerleri

Age içeriğin saklandığı zamanı saniye cinsinden belirtir. 

Bu makale yardımcı oldu mu?
0 kişi içerisinden 0 kişi bunun yardımcı olduğunu düşündü

Yorumlar

0 yorum

Yorum yazmak için lütfen oturum açın: oturum aç.