Tarayıcı Önbellekleme Nedir Nasıl Yapılır ?
Tarayıcı önbellekleme browser cache, leverage browser caching ve expires headers olarak bilinir.Ziyaretçileriniz sitenize bir browser aracılığı ile bağlantı kurmaktadırlar.Browser bir sayfayı yada bir client side taraflı bir objeyi yüklediğinde bu objenin ne kadar süreyle kendi önbelleğine alacağını on tarayıcı önbellekleme ile söyleyebilirsiniz.
Tarayıcı önbellekleme ile sitenize daha önceden giriş yapmış bir ziyaretçinin tekrar websitesi kaynaklarını yeniden yeniden indirmemesini sağlarsınız.Bu objeler tarayıcı önbelleğinden yükleneceği için sitenizin hız ve performansı arttarak trafik harcamanız da düşer.
Browser Cache uygulaması ile işlem sonrası sitenize daha az kaynak isteği geleceğinden Apache ‘ye gelen sorgularda da tasarruf sağlanır.Bu, Apache servisine gelen sorguları düşereceğinden CPU kullanımının düşmesi gibi olumlu sonuçlar da doğuracaktır.
Nasıl Yapılır ?
Başarılı sonuçlar için hangi içeriklerin ne kadar süreyle önbelleğe alınacağı iyi organize edilmelidir.
Böylece ziyaretçi tarayıcısının sürekli bayat kaynaklarla çalışmasının önüne geçilir.
Dosya ve Kaynaklar
Sitenizde önbellekleme yapılabilecek ne tür kaynaklar var bunları belirleyerek hangi kaynağın ne kadar süreyle önbellekleğe aldıracağınıza karar verir.
a: Web site script ve font dosyaları (css|js|woff|eot|ttf).
b: Resim dosyaları (jpg|jpeg|gif|png|ico).
c: Flash dosyaları (swf|flv).
d: Yayınladığınız dökümanlar (pdf|ppt|doc|docx|xls).
e: Medya dosyalarınız (mpeg|mov|mp3|wmv)
Sayfalar
Sayfalarınızın statik veya dinamik yapısına göre (html|htm|txt) içeriklerinizi planlayın.
Örneğin bir html sayfanızın içeriği anlık değişim gösteriyorsa önbellekleme süresini çok kısa tutmalısınız.Yayınladığınız html sayfalar uzun süre güncellenmiyorsa bu süreleri uzun tutabilirsiniz.
Saniye cinsinden bazı hesaplamalar ;
1 gün = 86400 saniye.
1 hafta [7gün] = 604800 saniye.
# 31 Gün üzerinden hesap ettim.
1 ay [31gün] = 2678400 saniye.
3 ay [93gün] = 8035200 saniye.
6 ay [186gün] = 16070400 saniye.
12 ay [372gün] = 32140800 saniyen.
Mod Expires Kullanımı
Mod_Expires bir Apache modulüdür ve genelde hosting sunucularının %99’unda kuruludur.
UYARI:Sunucunuzda bu modül yüklü değilse yada kuralları oluştururken herhangi bir yönerge hatası yaparsanız sitenizde Internal Server Error hatasıyla karşılaşabilirsiniz.
Mod_Expires modül yönergelerine ulaşmak için sitesini ziyaret edebilirsiniz.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 2678400 seconds"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 216000 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
ExpiresByType application/javascript "access plus 216000 seconds"
ExpiresByType application/x-javascript "access plus 216000 seconds"
ExpiresByType application/pdf "access plus 216000 seconds"
ExpiresByType application/x-shockwave-flash "access plus 216000 seconds"
ExpiresByType image/x-icon "access plus 2592000 seconds"
ExpiresByType image/jpeg "access plus 2592000 seconds"
ExpiresByType image/jpg "access plus 2592000 seconds"
ExpiresByType image/png "access plus 2592000 seconds"
ExpiresByType image/gif "access plus 2592000 seconds"
</IfModule>
Mod_Expires sürelerini dilerseniz şu yöntemle de tanımlayabilirsiniz ;
ExpiresByType image/gif A2592000
Diğer bir örnek ;
<ifmodule mod_expires.c>
<filesmatch “.(jpg|jpeg|gif|png|css|js|ico|mpeg|woff|swf|flv|pdf|mov|mp3|wmv|ppt|doc|docx)$”>
ExpiresActive on
ExpiresDefault “access plus 1 year”
</filesmatch>
</ifmodule>
Mod_Mime ile farklı türde dosyalar Apache’ye tanıtılarak Mod_Expires içinde kural olarak tanımlanabilir.Bilinen dosya türleri için oluşturulmuş gelişmiş bir Mod_Expires kural listesini inceleyebilirsiniz.
Mod Headers Kullanımı
Mod_Expires’a ek olarak Mod_Headers ayrıca kullanılmalıdır.En iyi sonuçlar için iki modülü birden kullanın.
Mod_Expires modül yönergelerine ulaşmak için sitesini ziyaret edebilirsiniz.
Uyarı : Uzantılar büyük/küçük harf duyarlı olduğundan aşağıdaki anlatımlarda yönergeleri oluştururken buna dikkat edin.Yönergelerde tanımlı olmayan bir uzantı bu çalışmadan etkilenmeyecektir.
<ifmodule mod_headers.c>
# Proksi Gecerli
Header append Vary User-Agent env=!dont-vary
# Web Sayfasi Dosyalari
<filesmatch ".(css|js|woff|ttf|eot)$">
Header set Cache-Control "max-age=2678400, public"
</filesmatch>
# Resimler
<filesmatch ".(jpg|jpeg|gif|png|ico)$">
Header set Cache-Control "max-age=2678400, public"
</filesmatch>
# Sayfalar
<filesmatch ".(html|htm)$">
Header set Cache-Control "max-age=7200, public, must-revalidate"
</filesmatch>
# Belgeler ve Dokuman
<filesmatch ".(pdf|ppt|doc|docx|xls)$">
Header set Cache-Control "max-age=86400, public"
</filesmatch>
# Medya Icerikleri
<filesmatch ".(mpeg|swf|flv|mov|mp3|wmv)$">
Header set Cache-Control "max-age=86400, public"
</filesmatch>
</ifmodule>
Bazı sayfaları özel olarak hariç tutulmak istenirse ;
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
Bir çok dosya için farklı kurallar oluşturulabilir.Bilinen uzantılar için gelişmiş bir mod_headers kural listesini inceleyebilirsiniz.
Cache Disable
Yukarıda bahsettiğim yönergelerle cache kontrolünü iptal etmeniz gerekirse eklediğiniz kodları kaldırabilir yada cachelenmemesini htaccess dosyasına veya html sayfanıza meta etiketi olarak aşağıdaki kodları ekleyebilirsiniz.
Htaccess
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
Meta Tag
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
merhaba Mod Expires i nasil yükleyebilirim yüklü olmadıgından hata alıyorum
Merhabalar,
Bu Apache’ye entegre yüklenen bir modül.Modül yüklü değilse Internal Server Error hatası alabilirsiniz.
Yalın CentOS üzerine Apache kurduğunuzda bile default olarak geliyor zaten.Bu yüzden sorun yaşıyorsanız sunucu yöneticinize danışmanızı öneririm.
Bu nedir abi?
ExpiresDefault “access plus 1 seconds
burada bir saniyede boşaltılan cache neyi temsil ediyor?
Geneli temsil ediyorsa, diğerlerine süre atamanın mantığı nedir?
Yarım yamalak paylaşımlar yapıyosunuz amk
ExpiresDefault varsayılan değeri temsil ediyor.
Geneli temsil ediyor ama diğerleri için özel süre belirleyebiliyoruz.
Senin gibi okuduğunu anlamadan copy/paste yapan arkadaşlar için bu değeri 2678400 saniye olarak düzenledim.
Kitap okumanı tavsiye ederim, çok faydasını görürsün.En azından küfredip komik duruma düşmeden kendini ifade edebilme yeteneği kazandırır.
Çok detaylı, çok ayrıntılı ve anlaşılır.
Uzun zamandır web sitem için tarayıcı cacheleme işlemi için doküman arıyordum. Sitenizi buldum. Uyguluyorum. Umarım yararlı olur.
Teşekkürler.
Okuduk faydalandık, teşekkürler.