PHP Cache Konusunda Yardım
Öncelikle herkese merhaba, bir projede sadece sayfada belirli kısımları cacheleyip eğer cache varsa
kullanıcıya cache teki veriyi göstermek istiyorum. Bunun için bir cache class ı buldum, üzerinde biraz
oynama yapıp projeme entegre etmek istedim ancak bu classta cachelenen kısımdan sonrasını exit;
ile bitiriyor.
Yani sayfamın kalan kısmını örneğin footer kısmı çalışmaz hale geliyor. Bu classı aşağıya ekliyorum.
Eğer class ı düzeltebilirsek sorun çözülecek ya da başka bir cacheleme konusunda tavsiye verebilecek
olursa o konuda da çok memnun olurum. İnternette bir çok arama yapmama rağmen işime yarayacak
bir sonuç elde edemedim. Şimdiden teşekkür ederim. Herkese iyi çalışmalar dilerim.
Class'ın çalışma mantığı
<?php $rankCache = new Cacher("cache",$_SERVER["REQUEST_URI"],1); ?>
<?php $rankCache->cacheStart(); ?> //başlangıç noktası
//cachelenecek kısım//
<?php $rankCache->cacheEnd(); ?> // bitiş noktası
Bu da kullandığım class
<?php class Cacher
{
public function __construct($dir, $uri, $time)
{
$this->dir = $dir;
$this->uri = md5($uri) . '.php';
$this->time = $time;
}
public function cacheStart()
{
if (file_exists($this->dir . "/" . $this->uri) && (time() < filemtime($this->dir . "/" . $this->uri) + ($this->time * 60 * 60))) {
include $this->dir . "/" . $this->uri;
exit; //sorun yaşadığım kısım
} else {
ob_start([$this, "process"]);
}
}
private function compress($buffer)
{
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
return $buffer;
}
public function process($buff)
{
file_put_contents($this->dir . "/" . $this->uri, $this->compress($buff));
return $buff;
}
public function cacheEnd()
{
ob_end_flush();
}
}
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!