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

cache lite из PEAR есть готовый, например
 
Вчера как раз интересовался, ничего так и не понял, с удовольствие послушал бы знающих людей о кэшировании, но нашел сравнение классов
 
В домашней директории создаем файлы .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 в конце страницы.

Подскажите как сделать, чтобы таким способом кешировались только выборочные страницы?
 
Я бы посоветовал посмотреть на Zend Framework - простая и удобная библиотека для кеширования в нем присутствует. Можно ее выдрать и пользоваться отдельно.
 
В домашней директории создаем файлы .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 в конце страницы.

пересмотрел много вариантов, в моем случае этот оказался самым удобным, простым и рабочим, но вот хотелось бы чттобы он еще кешировал и картинки, тоесть страница загружаемая из кеша брала и картинки из кеша, подскажите пожалуйста
 
кэш php,jpg,gif. Также можно добавить другие типы статики (+ расширения в htaccess, и условия для header)

cache.php
PHP:
$cachetime = '2 days'; // время обновления
$c_dir = 'c_dir/'; // каталог
$cf_name=realpath($c_dir).'/'.md5($_SERVER['REQUEST_URI']).".html";
if(!function_exists('page_cashe')) { function page_cashe() { global $cf_name; file_put_contents($cf_name,ob_get_contents()); } }
   if(isset($_GET['c_file'])) { header("Content-type: image/gif"); header('x-powered-by:'); }
if(is_file($cf_name) AND (strtotime('NOW - '.$cachetime)) < filemtime($cf_name)) exit(file_get_contents($cf_name));
ob_start(); register_shutdown_function('page_cashe');
   if(isset($_GET['c_file'])) readfile($_GET['c_file']);

.htaccess
Код:
php_value auto_prepend_file cache.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} ^(.*\.(jpg|gif))$
RewriteRule .* cache.php?c_file=%1 [L]
 
что то несрабатывает, первый заход, в папке кеша все сохраняется, второй заход на эту страницу, пустая, вообще ничего негрузится
 
ошибка возникает со всеми типами файлов или только с .jpg?

также для записи в кэш, файлы изображений должны быть физически в подкаталоге домена,
и в случае генерации скриптом будут ошибки (для скрипта возможен отдельный кэш)
 
Назад
Сверху