Кеширование как реализовать проще всего

jcrush

Гуру форума
Регистрация
10 Ноя 2006
Сообщения
688
Реакции
59
есть парсенный,html как бы проще всего реализовать кеширование данных?
 
  • Заблокирован
  • #2
а пример готовый можно?
 

Попробуй посмотреть сдесь. Уже есть много готовых решений. Чтото должно подойти.
 
PHP:
<?php
// в переменной $r будем хранить результат вывода (или его же из кэша)
$r=<считываем из кэша>;
$last_updated = <получаем время последнего обновления кэша>;
// если кэш устарел (в примере 60 секунд * 60 минут * 24 часа = 1 сутки)
if ((time()-strtotime($last_updated))>60*60*24) {
  // то формируем кэш
  $r.="новый кэш";
}
echo $r;
?>

Как ты будешь хранить кэш - дело твоё, можно в файлах, можно в БД.
 
т.е. если кеш устарел он запиывается новым или нет?
 
т.е. если кеш устарел он запиывается новым или нет?

А, ну да, совсем забыл про запись нового)))
Да, конечно, если пришлось формировать новый, то его нужно записать поверх старого.
 
В домашней директории создаем файлы .htaccess, start_cache.php, end_cache.php, а также папку с названием cache_files.

Папке cache_files необходимо проставить атрибуты 777.

Внутри .htaccess файла пропишите следующие строки:

HTML:
php_value auto_prepend_file /home/username/public_html/start_cache.php
php_value auto_append_file /home/username/public_html/end_cache.php

Строку /home/username/public_html/ необходимо заменить на путь к вашей домашней директории.

В скрипт start_cache.php помещаем следующий код:

PHP:
<?php
// раздел настроек, которые вы можете менять
$settings_cachedir = '/home/username/public_html/cache_files/';
$settings_cachetime = 3600; //время жизни кэша (1 час)

// код
$thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$cachelink = $settings_cachedir.md5($thispage).".html";
if (file_exists($cachelink)) {
    $cachelink_time = filemtime($cachelink);

    if ((time() - $settings_cachetime) < $cachelink_time) {
        readfile($cachelink);die();
    }
}

ob_start();
?>

Не забывайте исправлять путь /home/username/public_html/ на путь к вашей домашней директории.

А следующий код поместите в скрипт end_cache.php:

PHP:
 <?php
$fp = fopen($cachelink, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
?>

…вот, собственно, и все. Все ваши страницы будут кэшироваться на 3600 секунд. Этот параметр вы легко можете поменять в скрипте start_cache.php. Кэш страниц будет сохранен в папке cache_files. Файл start_cache.php инклудим в начале страницы а end_cache.php в конце страницы.
 
Если потом эти данные будут отдаваться пользователям, то самый простой вариант - реализовать кеширование средствами какого-нить шаблонизатора. Я обычно использую смарти (smarty.net). Там достаточно гибкий алгоритм кеширования. И ничего придумывать не надо :)
 
а зачем такие сложности с htaccess?
 
Назад
Сверху