Время:
Новых сообщений: Нет
Вы на форуме дней
Ваша группа: Гость
Ваш IP: 18.218.99.80
Logical-Portal — молодежный портал со своей изюминкой, каждый сможет найти что-то интересное и полезное для себя, например наш форум общения с которым вам обязательно нужно ознакомиться.
  • Страница 1 из 1
  • 1
[PHP] Кэширование
Сообщение оставлено 06.02.2013 в 09:56:07 | Сообщение #1
Сотни раз вставал у всех этот вопрос:
"У МИНЬЯ КУЧА ЗАПРОСОВ К БАЗЕ ПРИ КАЖДОМ ОТКРЫТИИ СТРАНИЦЫ.... ЕСЛИ ЗАПУСТИТЬ БОЛЬШЕ НАРОДУ, ТО САЙТ УПАДЕТ КАК ОТ ДДОСА, А ХОСТЕР ЗАБЛОКИРУЕТ ЗА ОГРОМНУЮ НАГРУЗКУ. ЧТО ДЕЛАТЬ?"
Ответ: Кэширование
Что это такое? Это сохранение как бы "копии" динамической страницы на диске и отображение ЕЕ, а не генерации новой страницы.
И как это реализовать?
Добавляем класс в скрипт.
Код
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();  
}


И всё. Больше ничего не требуется делать
 
   
  • Страница 1 из 1
  • 1
Поиск:
 
Графика от: Megas, GraFOS | Дизайн сверстал E.A.
Хостинг от uCoz
Яндекс.Метрика