Может кому-нибудь пригодится, класс для кэширования php-скриптов:
<?
class cache {
var $cache_cont; //Кэшируемый
контент
var $cache_url; //Адрес для
сохраниения кэшированых файлов
var $time_diff; //Через какой
промежуток времени кэшировать
var $its_all_cache_ok;
var $fullpath;
function CacheGo($urlsite,$time_for_cache,$path) {
$this->cacheurl="cache_".md5($urlsite);
$this->fullpath=$path.$this->cacheurl;
$this->time_diff = time()-@
filemtime ($this->fullpath);
if ($this->time_diff < $time_for_cache){
include ($this->fullpath);
$this->its_all_cache_ok=1;
}
}
function CacheInitial() {
ob_start();
}
function CacheClr() {
ob_end_clean();
}
function CacheGet () {
$this->cache_cont = ob_get_contents();
return $this->cache_cont;
}
function CacheInpAndWr() {
echo $this->cache_cont;
$fp = Удалён ($this->fullpath, "w"
; //Открываем файл на
запись
Удалён ($fp, $this->cache_cont);//Записываем кешируемую
информацию в файл
Удалён ($fp); //Закрываем
файл
}
}
?>
Использование:
Вместо <?php
include 'sidebar.php';
?>
Пишем
<?php
$cl_cache = new cache();//Кэширование бокового сайдбара
$cl_cache->CacheGo($_SERVER['REQUEST_URI'], 3600, rtrim($_SERVER['DOCUMENT_ROOT'],'/')."/cache/"
;
if ($cl_cache->its_all_cache_ok !=1) {
$cl_cache->CacheInitial();
include 'sidebar.php';
$cl_cache->CacheGet();
$cl_cache->CacheClr();
$cl_cache->CacheInpAndWr ();
}
unset($cl_cache);
?>
В функцию CacheGo мы передаем три параметра:
Первый параметр – текущая
(кэшируемая) страница, или другой любой уникальный идентификатор для данного кэша. К примеру можно взять
не только текущий адрес (URL), но и например текущий раздел. Если этот блок одинаковый для всех страниц, то просто пропишите название раздела, например «main_content».
Второй — время в секундах, на какое мы закэшируем блок. 3600 секунд это один час.
Третий — Путь, где будет храниться кэш вывода скрипта.
Не забудьте поставить права на папку 777.
После кеширования можете забыть об оптимизации скрипта..на время. Надеюсь этот класс окажется для вас полезным.