Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Топ пользователей
Drunya
Репутация: 110
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
В этой статье я хотел бы рассказать о принципах кэширования и как его можно осуществить на PHP. Само по себе кэширование позволяет избежать лишней нагрузки на сервер, если это возможно. Представьте ситуацию когда у вас на сайте для формирования страницы делается большое количество SQL запросов и операций, которые используют очень много ресурсов сервера. Если материал на странице не обновлялся, то делать эти запросы и операции каждый раз не зачем, ведь результат один. Вот в таких случаях и используеться кэш. А при обновлении материала он удаляется(очищается) и создается новый. Сейчас я покажу пример самого простого кэша.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
<?php //начинаем буферизацию (все что будет после этой функции не будет выводитсься, а будет сохраняться в буфер)
ob_start();
//далее мы можем делать что угодно, например выводить контент
echo 'Контент страницы';

//теперь забираем все что выводили из буфера и чистим его
$content ob_get_clean();
//теперь сохраняем страницу в файл, это и есть кэш
file_put_contents('cache.dat'$content);
echo 
$content;?>

Тут я показал как создать кэш, а сейчас я покажу как можно проверить его существование и не создавать его заново, если он есть.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
<?php //проверяем есть ли кэш
if (file_exsits('cache.dat')) {
    
$content file_get_contents('cache.dat');
} else {
    
//формируем страницу и создаем кэш
}
echo 
$content;?>

И так это самый простой способ что либо закэшировать, но как вы заметили тут мы работаем постояно с одним файлом а на сайте страниц может быть много и нам надо знать какой файл к какой странице относиться. Для этого мы можем делать имя файла уникальным для каждой страницы. Например брать строку запроса и делать имя файла с ее кэшем в виде md5 хеша этой строки запроса.
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
<?php $cache_file md5($_SERVER['REQUEST_URI']) . '.dat';
if (
file_exsits($cache_file)) {
    
$content file_get_contents($cache_file);
} else {
    
ob_start();
    echo 
'Контент страницы';
    
$content ob_get_clean();
    
file_put_contents($cache_file$content);
}
echo 
$content;?>

Вот так например:). Но и тут еще не все а что делать если зарегистрированый юзер и гость видят разное содержимое на одной и той же странице? Нам надо это учесть. Допустим мы узнаем о том что пользователь зареган из сессии, тогда мы можем делать приставку к имени файла для зарегистрированых юзеров.
 1 
 2 
<?php $cache_file md5($_SERVER['REQUEST_URI']) . '.dat';
if (isset(
$_SESSION['user'])) $cache_file 'autorized_' $cache_file;?>

Ну вот пока это все. Осваивайте эту технологию а я в следующей части расскажу как кэшировать отдельные блоки на странице и покажу более совершенный способ кэширования.
С вами был Drunya:)
Кэширование в PHP и как его сделать. ЧАСТЬ 1

Теги: Cache; PHP; Fapos CMS; Fast CMS; Быстрая CMS с форумом; бесплатная CMS Fapos;
Источник: Drunya
Автор: Drunya
Категория: PHP
Просмотров: 4943
Комментариев: 1

Комментарии
  • User avatar

    Евгенией

    Блочное кеширование: salat-production.ru/blog/klass-blochnogo-keshirovaniya-stranic.php
    Дата отправления: 12 Ноя 2014
Сейчас online: 102. Зарегистрированных: 0. Гостей: 102.
-->