Сотни раз вставал у всех этот вопрос:
"У МИНЬЯ КУЧА ЗАПРОСОВ К БАЗЕ ПРИ КАЖДОМ ОТКРЫТИИ СТРАНИЦЫ.... ЕСЛИ ЗАПУСТИТЬ БОЛЬШЕ НАРОДУ, ТО САЙТ УПАДЕТ КАК ОТ ДДОСА, А ХОСТЕР ЗАБЛОКИРУЕТ ЗА ОГРОМНУЮ НАГРУЗКУ. ЧТО ДЕЛАТЬ?"
Ответ: Кэширование
Что это такое? Это сохранение как бы "копии" динамической страницы на диске и отображение ЕЕ, а не генерации новой страницы.
И как это реализовать?
Добавляем класс в скрипт.
Код
class cache {
var $cache;
var $cacheurl;
var $modif;
var $its_all_cache_menu_ok;
var $fullurl;
function CacheStart($urlglobal,$timecache,$path) {
$this->cacheurl="cache_".md5($urlglobal);
$this->fullurl=$path.$this->cacheurl;
$this->modif=time()-@filemtime ($this->fullurl);
if ($this->modif<$timecache){
include ($this->fullurl);
$this->its_all_cache_menu_ok=1;
}
}
function CacheInit() {
ob_start();
}
function CacheClean() {
ob_end_clean();
}
function CacheGet () {
$this->cache = ob_get_contents();
return $this->cache;
}
function CacheInputAndWrite() {
echo $this->cache;
$fp = @fopen ($this->fullurl, "w");
@fwrite ($fp, $this->cache);
@fclose ($fp);
}
}
А теперь, в те места, которые требуют много ресурсов процессора для отображения, добавляем
Код
$classcache->CacheStart($_SERVER['REQUEST_URI'], 1800, rtrim($_SERVER['DOCUMENT_ROOT'],'/')."/cache/");
if ($classcache->its_all_cache_menu_ok!=1) {
$classcache->CacheInit();
//Здесь ваш код
$classcache->CacheGet();
$classcache->CacheClean();
$classcache->CacheInputAndWrite();
}
И всё. Больше ничего не требуется делать