Basit İçerik Önbellekleme Sınıfı

Bu sınıfla belirttiğiniz sayfa belirttiğiniz dosyada önbellek şeklinde tutulur. Belirlediğiniz süre içerisindeki tekrar ziyarette site kayıtlı önbellekten çağrıldığı için sayfa daha hızlı açılmış olur

<?php
class onbellek{
	var $periyot;
	var $sayfa;
	var $onbellekdosyasi;
	function uygula() {
		clearstatcache();
		if (file_exists($this->onbellekdosyasi)){
			if((time() - filemtime($this->onbellekdosyasi))>= $this->periyot){
				$this->guncelle();
			}elseif ($f= fopen($this->onbellekdosyasi,"r")){
				$icerik = fread($f, filesize($this->onbellekdosyasi));
				fclose($f);
				echo $icerik;
			}
		}else{
			$this->guncelle();
		}    
	}
	function guncelle(){
		if($icerik = implode("",file($this->sayfa))){
			if($w = fopen($this->onbellekdosyasi,"w")){
				fwrite($w,$icerik);
				fclose($w);
				$this->uygula();
			}else{
				echo "Yazma için önbellek dosyası açılamıyor";
			}
		}else{
			echo  "İçerik kapma komut dosyanız çalıştırılamıyor";
		}
	}
}
$b=new onbellek;
$b->sayfa = 'http://www.ulusanyazilim.com/';
$b->onbellekdosyasi="test.cache";
$b->periyot=60;
$b->uygula();
?>

test.cache içeriği http://www.ulusanyazilim.com/ içeriği ile aynıdır. Çıktı da aynı şekildedir.

Önbellekleme

Her seferinde aynı içeriğe sahip olan sayfalarınızı önbellekleyerek hem veritabanınıza olan bağlantıları azaltır, hemde sayfaları daha hızlı yüklersiniz.

Cache çalışma mantığı php sayfalarınızı html olarak saklayıp, sonraki seferde html olarak görüntülemesidir.

<?php
header('Content-Type: text/html; charset=utf-8');
class onbellek{//PHPSTATE ÖNBELLEK SINIFI
	public $zamanasimi=300;
	var $sorgu;
	var $dosya;
	var $soket;
	var $baslangic;
	var $bitis;
	function mikrosure(){
		list($usure, $sure) = explode(" ",microtime()); 
		return ((float)$usure + (float)$sure);
	}
	function kontrol(){
		$this->baslangic=0;
		$this->bitis=0;
		$this->baslangic=$this->mikrosure();
		if ($this->sorgu == ''){$this->soket = 1;return 1;}
		$this->dosya = $this->sorgu.'.onbellek'; 
		 if ((time()-@filemtime($this->dosya)) > $this->zamanasimi) { 
			 $this->soket = true;
			 return true;  
		 }else {      
			 $this->soket = false;         
			 return false;  
		 }
	 }
	function baslat(){
		if ($this->soket) {@ob_start();}       
	}
	function bitir(){
		if ($this->soket){
			$icerik = @ob_get_contents();
			@ob_end_clean();
			if ($f = @fopen($this->dosya, "wb")){
				@fwrite($f, $icerik);
				@fclose($f);
			}
			echo $icerik;
		}
	}
	function icerik(){
		@readfile($this->dosya);
	} 
	function bosalt(){
		@unlink($this->sorgu.'.onbellek');
		return $this->sorgu.'.onbellek';
	}
	function zaman(){
		$this->bitis=$this->mikrosure();
		if(($this->bitis - $this->baslangic) < 1){
			return (($this->bitis - $this->baslangic)*1000)." milisaniye";
		}else{
			return ($this->bitis - $this->baslangic)." saniye";
		}
	}
}


////////////////ÖRNEK////////////////////////

$onbellek = new onbellek();
$onbellek->sorgu = '100000 test';//onbellek dosya adı 

if(isset($_GET["temizle"])){//TEMİZLEME SORGUSU
	die($onbellek->bosalt().' Temizlendi <a href="?" >Normali Göster</a>');
}else{//SAYFA GÖSTERİMİ BAŞLATILIYOR
	
	if ($onbellek->kontrol()){
		echo "Önbellek Yok"."<br>";
		$onbellek->baslat();
?>
		
<?php 
//PHP SAYFA KODLARIMIZIN BAŞLANGICI/////////////////////////////////////////////////
		for ($i=1; $i<100000; $i++) {
			echo $i.'-';
		}
//PHP SAYFA KODLARIMIZIN BİTİŞİ///////////////////////////////////////////////// 
?>
		
<?php
		$onbellek->bitir();
	}else{
		echo "Önbellek Var"."<br>";
		$onbellek->icerik();
	} 
	echo '<hr /><br />'.$onbellek->sorgu.' Oluşturulma '.$onbellek->zaman().' <a href="?">Yenile</a> ya da <a href="?temizle=ok">Temizle</a>';
}
?>