CAche sistemine giris:
Cache kodlari 2 kisimdan olusur.
- kisim en ustte cacheye alinan, baslanan yer.
- kisim cachenin kapatildigi yer.
eger cache ile calisiyorsaniz 2. kisimdan sonrasini sitede gosteremeyeceginizi bilmenizi isterim. bu sebeple mantik kullanarak kendi sisteminizi gelistirebilirsiniz
Yani daha kolay anlayabilmeniz icin bir ornek vermek istiyorum:
<Cache kodlari>
kodlariniz, sorgulariniz
</cache kodlari>
bu sekilde kodlarinizi yerlestirdiginizde aradaki sorgular cache ye alinir. En guzelide cache ye sure koyabiliyorsunuz. yani cache edilen dosya 15 dk dan eski ise yenisi ile degistirilir.
ben size dakikali olarak cache alma kodlarini paylasacagim, sonrasinda aciklamasini yapacagim, dikkatle takip edin:
Cache ust kisim kodlari:
$cache_dosyasi= “kuaza_anasayfa”;
$cachefile = “cache/”.$cache_dosyasi.”.html”;
$cachetime = 60 * 60; // 60 * 60 = 1 saat
if (file_exists($cachefile) && (time() – $cachetime < filemtime($cachefile))) {
include($cachefile);
echo “<!– Kuaza onbellek sistemi “.date(‘jS F Y H:i’, filemtime($cachefile)).” –>n”;
exit;
}
ob_start();
yukaridaki kod dan sonras cache almak istediginiz kodlar geliyor.
en alt kismida asagidakileri ekleyerek cache leme islemi icin sayfa araligimizi belirliyoruz:
Cache alt kisim kodlari:
$fp = fopen($cachefile, ‘w’);
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
Iki kodu birlestirerek bir ornek vermek istiyorum. Eminim sonrasinda mantigi anlamis olursunuz:
$cache_dosyasi= “kuaza_anasayfa”;
$cachefile = “cache/”.$cache_dosyasi.”.html”;
$cachetime = 60 * 60; // 60 * 60 = 1 saat
if (file_exists($cachefile) && (time() – $cachetime < filemtime($cachefile))) {
include($cachefile);
echo “<!– Kuaza onbellek sistemi “.date(‘jS F Y H:i’, filemtime($cachefile)).” –>n”;
exit;
}
ob_start();echo “kuazadan selamlar arkadaslar. bu echo ettigimiz yazi cache sistemi sayesinde cache klasorune html olarak kaydedilecek. burada php yada sql sorgularida kullanabilirsiniz, sizin gordugunuz sekilde cachelendigi icin sonraki acilmasinda sorgu degil html sayfa karsiniza cikacaktir :)”;
$fp = fopen($cachefile, ‘w’);
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
bu kodlari tabiki <? php …. ?> kodlari arasina almaniz gerek sonrasinda calistirdiginizda orta kisimda echo ettigimiz yazi daha acmis oldugunuz cache klasorune html seklinde yani bu isimde: kuaza_anasayfa.html kaydedilecektir.
bu islemin saglikli yapilabilmesi icin, oncelikle cache klasorunun chmod ayarinin 777 olmasi gerek.
Birazda kodlardaki alanlardan bahsedelim:
$cache_dosyasi= “kuaza_anasayfa”;
Yukaridaki alinti yaptigim kod kisminda kuaza_anasayfa ismini degiskene atiyoruz ve sonrasinda bunu cachefile degiskeni kisminda kullaniyoruz. Bunu bu sekilde eklememdeki sebep wordpress yada farkli bir scripte daha cabuk uyarlanabilmesidir. Girilen sitedeki get yada post methodu ile gelen bir veriyi alarak degiskene atarsiniz sonrasinda bunun isminde cache dosyasi yaratilir. sonraki zamanlarda ayni post yada get metodundan ayni bilgi gelirse cache dosyasi gosterilecektir. hayir farkli bir sey gelirse o isimde yeni bir cache olusturacaktir.
Ben bunu tam anlayabilmeniz icin wordpress den ornek vermek istiyorum: WordPress de yazi okuma sayfasina girdiginizde aslinda p=YAZI IDSI seklinde bir link olusur.. Siz buradaki p= den sonrasini get metodu ile cache kismana alip degiskenimize yazdirirsaniz, o yaziya ait cachemiz olmus olur. Sonrasinda girilen diger yazilar icinde o ID de farkli bir cache olusturacagi icin sitenizin cogu sayfasi cachelenecek ve gelen ziyaretciler size zarar degil, kar getirecektir..
Ornegin kendi sitem olarak hdvideoclip.com da ana sayfa ve video izleme kisimlarinda cache kullaniyorum, yukaida bahsettigim sekilde ve inanilmaz hizli aciliyor sayfalar. Sonucda sorgu olmadigi icin html sayfa aciliyor. Bu hem ziyaretciyi size baglar, hemde hostunuz, sunucunuz sorgu sayisinin fazlaligindan kasilmaz.
o sitede ornek bir videoya bakin: timbaland-scream-ft-keri-hilson-nicole-scherzinger-9319.html
acilisi nasil ? Turkiyede iseniz youtube yasak oldugu icin yavaslamalar olabilir, yada siz acarken biz saldiri aliyorsak yavas acilabilir. onun haricinde hizini gormenizi isterim.
sistem wordpress bu sebeple once o sayfanin ID sini degiskene atiyorum. Ornek:
$cache_dosyasi = $konuIDSI;
Sonasinda da bu sekilde kullaniyorum:
$cachefile = “cache/yazi-”.$cache_dosyasi.”.html”;
ve cacheye kaydetmesi bu sekilde oluyor: yazi-KONU IDsi.html
Cache dosyasinin ne kadar surede CACHE de kalacagini ise burada belirliyoruz:
$cachetime = 60 * 60; // 60 * 60 = 1 saat
10 dk da bir cache alsin istiyorsaniz bu sekilde yapin:
$cachetime = 10 * 60; // 10 * 60 = 10 dakika
Buradaki 60 = 60 saniyedir, yani 1 dakikadir. bu sekilde hesaplamanizi yapabilirsiniz.
sonrasinda da cacheden aldigimiz saat bilgisini belirledigimiz sure ile karsilastiriyoruz ve gecmis ise yeni cache almasini, gecmemis ise cacheyi gostermesini istiyoruz:
if (file_exists($cachefile) && (time() – $cachetime < filemtime($cachefile))) {
include($cachefile);
echo “<!– Kuaza onbellek sistemi “.date(‘jS F Y H:i’, filemtime($cachefile)).” –>n”;
Yukarida da yazdigim gibi, yukaridaki kod tarihleri ve saatleri karsilastiriyor, belirledigimiz dakikanin ustunde degil ise cacheyi gosteriyor, ustunde ise buradan tekrar basliyor cache almaya: ob_start(); ve buradan da bitiriyor: ob_end_flush();
Ben wordpress den ornek verdim, kullandiginiz her sisteme entegresi cok basit bir kod uygulamasidir bu. Bu kalibi kullanarak sizde sistemlerinizi Cacheleye bilir. Sunucunuzun rahatlamasini %50 ye varan performans artisini saglayabilirsiniz..