cache olayına girmeden önce
header fonksiyonunu bilmemiz gerekiyor.
header() ile gönderilen cache bilgileri tarayıcılar içindir. Örnek gösterdiğiniz kodlarda web sunucu yazılımı apache mi değil mi diye bakılıyor. Aralarındaki fark görüldüüğü üzere ek bir parametre olan "max-age", yani yaşam süresi.
Bu cache olayı tarayıcının dosyaları ön bellekte tutup tutmamasını, tutulacaksa ne kadar süre ile tutacağını bildirir.
Firefoxuna firebug, liveHeaders, httpFox tarzı eklentileri kurup bunları test edebilirsin.
Son olarak basit bir örnek vereyim sitemizde kullandığımız bir css dosyanıın tarayıcı ön bellek süresini bildirebilir, veya hiç ön belleğe almamamasını, alsa bile siteye girdiğinde baştan talep etmesini sağlayabiliriz. Bunun gibi bir sürü ıvır zıvır.
Ben bunları çoğu zaman php heade yerine apache .htaccess ile yapıyorum. Bu benim kohana 2 .htaccess dosyamın konuyla ilgili kısımları:
<IfModule mod_expires.c>
<FilesMatch "\.(ico|flv|jpg|jpeg|png|gif|js|css|swf|pdf)$">
#ExpiresActive on
#ExpiresDefault "access plus 1 year"
</FilesMatch>
# 2 hours
<FilesMatch "\.(html|htm|xml|txt|xsl)$">
#Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
</IfModule>
<IfModule mod_deflate.c>
#AddOutputFilterByType DEFLATE text/xhtml text/html text/plain text/xml text/javascript application/x-javascript text/css
</IfModule>
FileETag none
<IfModule mod_headers.c>
Header unset Pragma
Header unset ETag
</IfModule>
Konu dahilinde, cache hakkında google de yüzlerce yazı bulunabilir.
.