Bu İçerikte Bahsedilen Konular
Önbelleğe alma işlemi, temel olarak web sayfalarında sık erişilen kaynakların depolanması ve yeniden kullanılmasıdır. Depolama, hızlı erişim için kullanıldığından gezinme daha hızlıdır ve bu da web sitelerinin ve uygulamaların performansını artırır. Bu nedenle HTTP caching, kullanıcı deneyimini optimize etmek ve dolayısıyla işletme gelirlerini artırmak isteyen işletmeler için önemli bir araçtır.
Bir web sitesi hakkında “hangi konudan en çok rahatsız olduğunuz” yönünde bir soru ile karşılaşsaydınız, muhtemelen “web sitesinin yavaş yüklenmesi” olduğunu söylerdiniz. Tüketicilerin %70’i bir web sayfasının görüntülenme hızının çevrimiçi satın alma isteğini etkilediğini söyler. Müşteri yönetimi ve satış için yapılan çalışmalar kapsamında bu hız düşüklüğü için bir önlem alınması gerekir.
Teknoloji çağında yaşadığımız için, sanal dünyada yaşanan gelişmeleri takip edememek, bir işletme için başarısızlığın habercisidir. Google ve diğer arama motorları, aramaları sıralarken yavaş web sitelerini geri plana atar. Web sitenizi görüntülemeyi ve sitede gezinmeyi beklerken, kullanıcının deneyimini ve zaman tüketimini hayal ederseniz, bunun web siteniz için ne denli olumsuz olduğunu hayal edebilirsiniz. Web sitesinin yoğun olduğu zamanlarda, bir web sitesini daha hızlı hale getirmenin etkili bir yolu “HTTP caching” işlemidir.
HTTP nedir ve nasıl çalışır detaylı olarak öğrenmek için buraya tıklayabilirsiniz.
HTTP Caching Nedir?
HTTP caching, bir web sitesinin, fotoğraflar, HTML metni, grafikler, URL’ler ve komut dosyaları gibi sık erişilen kaynaklarının depolanması ve yeniden kullanılmasını sağlar. Bu da sayfanın her ziyaretinde indirilmesini engeller. HTTP caching işlemini gerçekleştirmek için, tıpkı bir kaynak deposu gibi bir önbellek kullanılır.
Bir web sayfası söz konusu olduğunda önbellek tarayıcıda, proxy sunucusunda, kenar düğümlerinde “HTTP caching” işlemi gerekebilir. Dolayısıyla, herhangi bir ziyaretçi web sitenize eriştiğinde sistem, depolanan web sitesinin kaynaklarının kopyalarının olup olmadığını kontrol etmek için önbelleğe erişir ve orijinal kaynaktan alması gerekmediğinden içerikleri çok daha hızlı alır. Önbellekte bu kaynakların bir kopyası yoksa komut sonucunda, gerekli kaynakları çeker ve önbellek sunucusuna depolar.
Önbellek kullanımı, istek ve yanıt başlığı tarafından iletilen komutlar aracılığıyla yapılır. Önbelleğe alma yoluyla, istenen komutun daha önce önbelleğe alınmış kopyalarının olup olmadığını kontrol ettiği için, istekte yapılan gidiş – dönüş sayısını azaltmak mümkündür. Gidiş – dönüş miktarındaki azalma, isteklerin süresini ve dolayısıyla ağ trafiğini azaltır. Bu işlem bir dalgalanma etkisi yaratır. Çünkü bunların hepsi birlikte daha düşük gecikmeye ve sunucu maliyetlerine katkıda bulunur.
Önbellek kullanımı, veri aktarırken HTTP protokolünün de bir parçasıdır. Bu sebeple söz konusu kullanımın neyle ilgili olduğunun irdelenmesi gerekir.
HTTP Önbelleğe Alma Nedir?
HTTP’yi önbelleğe almanın ne olduğunu daha iyi anlamak için, HTTP’nin ne olduğunu tam anlamıyla kavramak gerekir. HTTP kısaca; metin tabanlı bir uygulama katmanı aktarım protokolüdür ve ağ aygıtları arasında, yani istemciler ve sunucular arasında veri iletişiminin temeli olarak kabul edilir. HTTP iletişim sürecinde, değiştirilen bilgilerin nasıl depolanacağını tanımlamak için yönergeler de verilebilir ve bu daha sonra HTTP önbelleğe alma olarak adlandırılan kavramdır.
Önbelleğe alma ile ilgili bu bilgiler istek ve yanıt üstbilgilerinde birleşir. Bunlar istemci veya sunucu tarafından istenen davranışı tanımlar. Önbelleklemenin temel amacı, geçerli bir isteği karşılamak için önceki bir yanıt iletisini yeniden kullanarak iletişim performansını artırmaktır.
HTTP Caching Nasıl Çalışır?
En temel haliyle, önbelleğe alma işleminin aşağıdaki şekilde çalıştığını söyleyebiliriz.
- Web sitesi sayfası, kaynak sunucudan bir kaynağa ulaşım izni ister.
- Sistem, kaynağın zaten depolanmış bir kopyası olup olmadığını görmek için önbelleği denetler.
- Kaynak önbelleğe alınırsa, sonuç bir önbellek yanıtına isabet eder ve kaynak önbellekten teslim edilir.
- Kaynak önbelleğe alınmazsa, önbellek kaybına neden olur ve dosyaya özgün kaynağından erişilir.
- Kaynak önbelleğe alındıktan sonra, süresi dolana veya önbellek temizlenene kadar erişime devam edilir.
HTTP Caching Türleri Nelerdir?
Önbellek türü, içeriğin depolandığı yere göre tanımlanır. Bu kapsamda aşağıdaki HTTP caching türlerini sıralayabiliriz.
Tarayıcı Önbelleği
Bu depolama işlemi tarayıcıda yapılır. Tüm tarayıcılarda, genellikle daha önce erişilen kaynakları almak için kullanılan yerel bir depolama alanı bulunur. Depolanan kaynaklar paylaşılmadığından bu tür önbellekler özel olarak nitelendirilir.
Proxy Önbelleği
Ara önbelleğe alma olarak da adlandırılan bu depolama türü, proxy sunucusunda, istemci ile kaynak sunucu arasında yapılır. Bu, birden çok istemci tarafından kullanıldığı ve genellikle sağlayıcılar tarafından tutulduğu için paylaşılan önbellek türüdür.
Ağ Geçidi Önbelleği
Ağ geçidi önbelleği, “ters proxy” olarak da adlandırılır. Bu HTTP caching türü, ayrı ve bağımsız bir katmandır. Depolama istemci ile uygulama arasında yer alır. İstemci tarafından yapılan istekleri önbelleğe alır ve bunları uygulamaya gönderir. Sonrasında ise yanıtlara göre aynı işlem yapılarak uygulamadan istemciye tekrar bir bağlantı kurulur. Bir kaynak yeniden istenirse, önbellek uygulamaya ulaşmadan önce yanıtı döndürür. Aynı zamanda paylaşılan bir önbellektir. Ancak bu döngü kullanıcılar tarafından değil sunucular tarafından sağlanır.
Uygulama Önbelleği
Bu HTTP caching türü uygulamada yapılır. Geliştiricinin, tarayıcının hangi dosyaları önbelleğe alması gerektiğini belirtmesine ve çevrimdışı olduklarında bile kullanıcılara sunmasına olanak tanır.
Önbellek Kontrolü Nedir?
Önbellek kontrolü, üstbilgide önbelleğe alma işlemi için aşağıdaki standart yönergeler takip edilmelidir.
Private
Yalnızca bir kullanıcının erişimi olduğu için içerik özel kabul edilir. Bu durumda, özel içerik istemcinin tarayıcısı tarafından saklanabilir. Fakat ara önbellekler tarafından saklanamaz.
Public
Birden fazla kullanıcının erişebildiği içerik, herkese açık olarak kabul edilir. İçerik, tarayıcı tarafından veya istemci ile sunucu arasındaki diğer önbelleklerde saklanabilir.
No-Store
İçerik önbelleğe alınamaz. Bu nedenle istek her zaman kaynak sunucuya gönderilir. Özellikle gizli verilerin iletilmesinde kullanılır.
No-Cache
Önbelleğe alınan içeriğin her yeni istekte yeniden değerlenmesi gerekir. Bu da içeriği sistem tarafından hemen tanınan hale getirir. Karşılaşılan durumda önbellek, depolanan kopyayı bırakmadan önce doğrulama için isteği kaynak sunucuya gönderir.
Max-Age
Kaynak sunucuda yeniden değerlenmeden içeriğin önbelleğe alınabileceği maksimum süreyi tanımlar. Süre saniye cinsinden tanımlanır ve en fazla bir yıldır. Bu da 31,536,000 saniyeye tekabül eder.
S-Maxage
İçeriğin önbelleğe alınabileceği süreyi belirtir ve bu nedenle max-age’e çok benzer. Ancak aradaki fark, bu seçeneğin yalnızca ara önbellekler için geçerli olması, tarayıcı için geçerli olmamasıdır.
Max-Stale
Hemen verilmeyen bir yanıtın kabul edileceğini gösterir. Max-Stale’e (saniye cinsinden) hiçbir değer atanmazsa, herhangi bir yanıt alınır. Ancak bir değer atanırsa, sınır için belirtilen süreye kadar tazelik ömrünü aşmış bir yanıt kabul edilir.
Must-Revalidate
“Max-age”, “s-maxage” veya “expires” ile gösterilen son kullanma süresine uyulması gerektiğini belirtir. Bu durumda, eski içerik istemciye teslim edilmez. Tarayıcı yalnızca bir ağ hatası oluştuğunda eski içeriği kullanabilir.
Proxy-Revalidate
Proxy-revalidate yönergesi, must-revalidate’e benzer ancak yalnızca ara sunucular, proxy’ler veya CDN’ler için yapılandırılmıştır. Bu durumda, HTTP caching hizmetleri, eski haline gelirse içeriği yeniden değerlemesi gerekir.
No-Transform
Önbelleğe alınan içeriğin değiştiremeyeceğini tanımlar. Örneğin; önbellek, kaynak sunucudan aldığı sıkıştırılmamış bir içeriğin kompakt bir sürümünü göndermeyi seçemez.
Min-Fresh
İçeriğin en azından belirtilen kullanım ömrü boyunca taze tutulması gerektiğini ifade eder.
Only-If-Cached
İstemcinin yalnızca önbelleğe alınmış bir kopyası olan içerik istediğini belirtir. Önbellek kısıtlamalara uyuyorsa, yanıtta önbelleğe alınmış içeriği kullanmalıdır. Aksi takdirde aracı sunucunun isteği tamamlamak için kaynak sunucudan yanıt almadığını belirten bir 504 durum koduyla belirtilen ağ geçidi zaman aşımı ile karşılaşılır.
Farklı önbellek davranışlarını başlıklarda birleştirmek mümkündür. Ancak bunların tersi olduğu için yalnızca bir seçeneğin mümkün olduğu iki durum vardır. Bunlar “no-cache or no-store” ve “private or public” durumlarıdır.
Expires Başlığı Ne İşe Yarar?
Expires başlığı, bir içeriğin ne zaman sona ereceğini tanımlar. Belirtilen süreden sonra önbelleğe alınan içeriğin eski olduğu kabul edilir. Bu nedenle istek kaynak, sunucudaki en son içeriğe erişebilir.
ETag Nedir?
Etag (varlık etiketi) üstbilgisi, tarayıcının önbelleğe alınmış kaynağının kaynak sunucudakiyle aynı olup olmadığını doğrulamak için kullanılır. Diğer bir deyişle, istemcinin önbelleğe alınmış içeriğin en son sürümünü alıp almadığını doğrular. Bu başlık, bir web sitesindeki her kaynakla ilişkili benzersiz bir tanımlayıcı olarak çalışır. Tanımlama için web sayfası sunucuları, kaynak her değiştirildiğinde değiştirilen bir ETag değeri kullanır. ETag değeri, kaynağın son güncelleştirmesinin tarih ve saatidir.
Son Değişiklik Nedir?
Kaynak son olarak değiştirilmesi “last-modified” başlık tarayıcısında gösterilir. Önbelleğe alınan kopya kullanılır ya da en son sürüm ortaya çıkar. Örneğin, bir kullanıcı web sitenizi ziyaret ettiğinde tarayıcı, sayfanın kaynaklarını saklar. Böylece web sitesine bir sonraki erişimlerinde, sunucu dosyalara en son erişildiklerinden bu yana değişip değişmediğini kontrol eder. Değişiklik yoksa sunucu tarayıcıya “değiştirilmemiş 304” yanıtı gönderir ve önbelleğe alınmış kopya kullanılır.
Vary Üst Bilgisi Nedir?
Vary üstbilgisi, aynı içeriğin farklı sürümlerini depolamayı mümkün kılar. Bu sebeple, hangi içeriğin istek olduğuna karar vermeden önce ek üstbilgileri denetlemek üzere önbellek istemek için kullanılır. Örneğin, “kodlamayı kabul et” başlığıyla kullanıldığında, ayar sıkıştırılmış ve sıkıştırılmamış içeriği ayırt etmeyi sağlar ya da kullanıcı aracısı başlığıyla kullanıldığında, mobil veya masaüstü için bir web sitesinin sürümünü farklılaştırır.
HTTP Caching’in Faydaları Nelerdir?
“HTTP caching” sisteminin dikkat çeken faydaları vardır. Bu kapsamda aşağıdaki yararlara dikkat çekebiliriz.
- Gecikmelerin mümkün olduğu kadar azaltması,
- Bant genişliği tüketiminin kısaltılması,
- Ağ trafiğindeki yoğunluğun azaltılması,
- Web sitesi hızı ve performansının artması.
Kullanıcıların web sitelerinin hızı konusunda çok yüksek beklentileri vardır. Bu beklentilerini karşılamayan bir yanıt, müşterileri kaybetme riskinin doğmasına neden olur. Göze alınan bu risk faktörü, web sitesi gelirlerinin de düşmesi demektir. İyileştirme kapsamında “HTTP caching” işlemleri ile müşterileriniz ya da takipçileriniz, web sitenizde aradığını bulabilir.
Web sitenizin hızını bazı araçlar ile ölçebilirsiniz. Hız testi araçlarını incelemek için buraya tıklayabilirsiniz.
“HTTP caching”, bir web sitesinin hızını optimize etmede son derece önemlidir. Özellikle müşteri tabanınızı artırmak veya markanıza sadık kalmasını istiyorsanız, bir şirketin markasının algısını iyileştirmek için bu sistemi kullanmalısınız.
“HTTP caching”, yüksek performansa sahip oldukça hızlı yüklenen bir web sitesi isteyenler için en iyi çözümlerden biridir. Ayrıca önbelleğe alma hizmetini kaynak sunucunuz kullanılamıyor olsa bile statik dosyalar ve canlı ya da isteğe bağlı videolar dahil olmak üzere, tüm “HTTP” ve “HTTPS” tabanlı içerik türlerini sunar. Her boyuttaki kitleye içerik sunarken, performansı ve güvenilirliği artırır. Aktarım hızlarını artırırken hataları ve gecikmeyi azaltır.
HTTPS ile ilgili detaylı bilgilere blog yazımızdan ulaşabilirsiniz. Buraya tıklayıp yazıyı inceleyebilirsiniz.
Web sitenizin yüksek hızlı ve kaliteli hizmet veren bir platform olmasını istiyorsanız, “HTTP caching” kullanmayı mutlaka düşünmelisiniz. Kuracağınız sistem ile web sitesi ziyaretçilerinizin sitenizden arzu ettiğiniz verimi almasını sağlayabilirsiniz. Bu da daha fazla kişiye ulaşarak web sitesi ve işletme gelirlerinizin artması anlamına gelir.