Вы можете сохранить выходные данные страницы перед завершением сценария, а затем загрузить кэш в начале сценария.
пример кода:
<?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);
?>
Если у вас много страниц, нуждающихся в этом кешировании, вы можете сделать это:
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);
?>
Тогда просто добавьте
include('cachestart.php');
в начале ваших скриптов. и добавьте
include('cacheend.php');
в конце ваших сценариев. Не забудьте иметь папку с именем cache и разрешить PHP доступ к ней.
Также помните, что если вы выполняете полный кеш страниц, ваша страница не должна иметь специфичного для SESSION отображения (например, отображать панель членов или что-то еще), потому что они также будут кэшироваться. Посмотрите на структуру для специфического кэширования (переменную или часть страницы).