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.
Yorumlar
Yorum yazmak için lütfen oturum açın: oturum aç.