Bir sayfa güncellenmektedir edilmemiş ise izleyiciler önbelleğe alınmış bir kopyasını almak gerektiğini, böylece nasıl php bir web sayfası önbelleğe mi?
Thanks for your help. PS: I am beginner in php.
Eğer senaryoyu bitirmek önce aslında sayfanın çıkış kaydedin, sonra senaryonun başlangıcında önbelleği yüklemek.
Örnek kod:
<?php
$cachefile = 'cache/'.basename($_SERVER['PHP_SELF']).'.cache'; // e.g. cache/index.php.cache
$cachetime = 3600; // time to cache in seconds
if(file_exists($cachefile) && time()-$cachetime <= filemtime($cachefile)){
$c = @file_get_contents($cf);
echo $c;
exit;
}else{
unlink($cachefile);
}
ob_start();
// all the coding goes here
$c = ob_get_contents();
file_put_contents($cachefile);
?>
Bu önbelleğe alma ihtiyacı sayfaları bir sürü varsa bunu yapabilirsiniz:
in cachestart.php
,
<?php
$cachefile = 'cache/'.basename($_SERVER['PHP_SELF']).'.cache'; // e.g. cache/index.php.cache
$cachetime = 3600; // time to cache in seconds
if(file_exists($cachefile) && time()-$cachetime <= filemtime($cachefile)){
$c = @file_get_contents($cf);
echo $c;
exit;
}else{
unlink($cachefile);
}
ob_start();
?>
in cacheend.php
,
<?php
$c = ob_get_contents();
file_put_contents($cachefile);
?>
Sonra sadece basitçe eklemek
include('cachestart.php');
Betiğinizin başında. ve eklemek
include('cacheend.php');
Betiğinizin sonunda. cache adında bir klasör var ve PHP erişmesine izin unutmayın.
Ayrıca bir tam sayfa önbellek yapıyoruz eğer onlar da önbelleğe olacak çünkü, sizin sayfa OTURUM özel ekran (örneğin ekran üyelerinin 'bar ya da ne) sahip olmaması gerektiğini hatırlıyorum. Özel-önbelleğe alma (değişken veya sayfasının parçası) için bir çerçeve bak.
Ayrıca Mauris cevap ben bu işaret etmek istiyorum:
Eğer önbelleğe kullanırken dikkatli olmak zorunda. Dinamik veri (statik html yerine php kullandığınızda durumda olmalıdır) varsa o zaman önbelleği ilgili veri değişiklikleri geçersiz zorunda.
Bu dinamik veri şeklinize bağlı olarak, oldukça kolay ya da son derece zor olabilir.
Güncelleştirme
Eğer geçersiz kılmak nasıl önbellek önbelleğe somut türüne bağlıdır. Sen önbellek dosyaları hangi sayfa (ve belki kullanıcı girişi ile) ait olduğunu bilmek gerekir. Veri değiştirir zaman önbelleğe alınmış dosyayı silmek veya önbellek veri yapısından sayfa çıktı kaldırmanız gerekir.
Ben önbelleğe için kullandığınız uygulama bilmeden size bu konuda daha fazla detaylı bilgi veremem.
Diğer millet Örneğin Armut paket veya memcached için önerdi. Bu onun veri değişiklikleri tüm önbelleğini veya parçaları geçersiz gerekli işlevlere sahiptir.
Kullan memcached. Bu sitede bunu yapmak için nasıl bir açıklama var.
Squid kullanın veya tarayıcı önbelleğini yapmak doğru HTTP başlıklarını güncelleyin. Ben soruya dayanarak önbelleğe kendi versiyonunu dönmeye gerek görmüyorum.
ARMUT bir önbelleğe alma paketi (aslında iki) sahiptir:
http://pear.php.net/package/Cache and
http://pear.php.net/package/Cache%5FLite for smaller apps
Ben bir kez sorgu önbelleğe alma için Cache paketi (ilk olarak) kullanılır ve o zaman o kadar hatırladığım kadarıyla çalışmalarını yaptı.