Neden Cache Sistemi Kullanmalıyım ?

Siteniz hit aldığında sunucuda sorunlar çıkardığı zaman

Mysql overload olduğunda

Cpu kullanımı arttığında

Host Bulamaz Hale Geldiğinizde

Yada kendi sunucunuz olsa dahi sitenize girmeye

korktuğunuzda ( ya ben siteye girince sunucu çökerse dediğinizde)

İşte cache sistemindeki amacımız kaynak tüketimini en aza indirmek

Yukarda saydıgım durumların en feci olanı mysql sunucu özellikleri düşük ise

Siteyi 4 5 defa yenileyince mysql tavan yapıyor O hiç sevmediğin olay Olur

Databaseye Bağlanamadım

Konu fazla uzadı sanırım r10 da açılan konuda hakimi arkadaşımız

Burada basit bir cache betiği yayınlamış

yazmış olduğu betikte ufak bi güvenlik açığı vardı biraz düzenledim betiği

Betik 2 Kısımdan Oluşuyor birinci kısım sayfanın en üstüne yazılacak kısmı

2 kısım ise sayfanın en altına yazılacak kısmı

Aşşağıdaki kısmı sayfanın en üstüne yazılacak kısmı

<?
$filename = "%%-".md5($_SERVER['REQUEST_URI'])."-%%.html";
$cachefile = "cache/".$filename;
$cachetime = 3 * 60 * 60; // Cache Süresi
if (file_exists($cachefile))
{
if(time() - $cachetime < filemtime($cachefile))
{
readfile($cachefile);
exit;
}
else
{
unlink($cachefile);
}
}
ob_start();
?>



Aşşağıdaki kısmı isi sayfanın en altına yazılacak kısmı


<?
$fp = fopen($cachefile, 'w+');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
?>




Temel Olarak Betiğin Ne işlev gördüğünü açıklıyayım basit Bir şekilde

Herhangi bir ziyaretçi sitemizi ziyaret etti örnek verecek olursak

http://www.sitemiz.com/mysql-php-ajax.html

cache betiği url yi alıyor ve isimini md5 liyor ve $cachefile diye bir değişkene atıyor

ve daha sonra sayfanın en altına eklediğimiz

$fp = fopen($cachefile, 'w+');

fwrite($fp, ob_get_contents());

fclose($fp);

ob_end_flush();


Php Kodları $cachefile dosyasını yazılabilir şekilde açıyor ve sayfa içeriğini

yazıyor Tekrar Bir ziyaretçi

http://www.sitemiz.com/mysql-php-ajax.html

yazıp sitemizi ziyaret ettiğinde üstü yazdığımız php kodları devreye giriyor

if(time() - $cachetime < filemtime($cachefile))

{

readfile($cachefile);

exit;

}


Şimdiki zaman ile dosya zamanı arasındaki fark cache süresinden kücük ise readfile

ile daha önce kaydetmiş olduğumuz html dosyasını ziyaretciye gösteriyor

Bizim burdaki Kazancımız sitemize giren 2. ziyaretci izin mysql sorguları php sorguları yerine

daha önce kaydetmiş olduğumuz html dosyasını gösterdik ve kaynaktan tasarruf ettik

Umarım Anlatabilmişimdir unutmadan cache süresini $cachetime değişerek kendinize göre ayarlayabilirsiniz



kaynak:s4l1h Kişisel Günce: Php Cache Sistemi

emege saygım var

bir başka örnek:http://www.wm-tr.com/kullanimi-basit-cache-sistemi