Вывод кэша контента Кэш PEAR
Далее мы начнем изучать более часто используемые технологии кэширования, что также является целью этой статьи. Сначала мы используем пакет кэша в PEAR. PEAR может кэшировать контент в файлах, базах данных или памяти. В качестве примера возьмем файлы.
Вот небольшая программа PHP, которая не использует кеширование:
pear_content_cache1.php.
<?php
echo "Это содержимое. <P>";
echo "Текущее время" . date('MdY H:i:s A', time()) "<BR>";
?>
Вышеуказанная программа очень проста, теперь мы добавим в нее кэширование.
pear_content_cache2.php
<?php
require_once 'Cache/Output.php';
//Установите каталог кэша, который должен быть доступен для записи $cacheDir = './pear_cache';
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
//Если переменная nocache пуста, используйте содержимое кеша //Если вы хотите получить самое последнее содержимое, назначьте его в переменную nocache if (empty($_REQUEST['nocache']))
{
// Создаем уникальный идентификатор кэша // Запрос + информация о файлах cookie $cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS) );
}
еще
{
//Если вы хотите получить самый последний контент, идентификатор пуст $cache_id = null;
}
//Проверяем, доступно ли содержимое кэша, соответствующее идентификатору кэша, if ($content = $cache->start($cache_id))
{
//Кэш уже существует, выводим напрямую и завершаем скрипт echo $content;
Выход();
}
// Контент не существует в кеше, генерируем новый контент и записываем его в кеш echo "Это контент. <P>";
echo "Текущее время" . date('MdY H:i:s A', time()) . "<BR>"
// Записываем содержимое в кэш echo $cache->end();
?>
Обновите эти два файла соответственно, и вы обнаружите, что время в строке «Текущее время» в pear_content_cache1.php меняется при обновлении, тогда как эта строка в pear_content_cache2.php не меняется. Это связано с тем, что pear_content_cache2.php использует кеширование для хранения запрошенного пользователем содержимого в статическом файле. Когда пользователь снова запрашивает, он выводится непосредственно из файла без необходимости в программе для динамического создания содержимого.
Для pear_content_cache2.php, если пользователь хочет прочитать самую последнюю информацию вместо старой информации в кеше. Затем вы можете получить к нему доступ с помощью http://…/pear_content_cache2.php?nocache=1 , что отключит функцию кеширования. Обновите его и увидите, что время соответственно изменится.
Подведем итог использованию класса кэширования контента PEAR:
1. При включении пакета PEAR обязательно укажите правильный путь.
2. Содержит класс кэша в Output.php
require_once 'Cache/Output.php'
3. Установите каталог кэша.
$cacheDir = './pear_cache';
убедитесь, что этот каталог доступен для записи. Данные кэша будут записаны в подкаталоги этого каталога.
4. Создайте объект выходного кэша
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
Первый параметр указывает, что мы используем кеш, основанный на методе «файл», а второй параметр — это кэш Массив, связанный с каталогами.
5. Сгенерируйте уникальный идентификатор кэша
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS)
Здесь генерируетсяID объекта $cache
));( ) путем предоставления массива информации (URL, данных HTTP POST и файлов cookie HTTP) для уникальной идентификации этого запроса и отличия его от других запросов.
6. Добавьте оператор логической оценки, чтобы проверить, существуют ли уже данные кэша, соответствующие идентификатору кэша. Если они существуют, получите данные и завершите сценарий.
если ($content = $cache->start($cache_id))
{
эхо $содержание;
Выход();
}
7. Поместите код, генерирующий контент, после приведенного выше логического оператора и завершите его использованием объекта кэша.
echo $cache->end();
вывод функции кэша PEAR кэш
PEAR может не только кэшировать выводимый контент, но и результат вызова определенной функции. Это очень интересная функция. Если ваша программа часто использует определенную функцию и результат вызова один и тот же, я предлагаю вам попробовать ее, особенно если эта функция работает медленно.
Затем мы реализуем буферизованный вызов функции lowFunction(), которая выполняется очень медленно.
<?php
require_once 'Cache/Function.php'
$cacheDir = './pear_cache/';
$cache = new Cache_Function('file',array('cache_dir' => $cacheDir));
$arr = array('яблоко', 'груша', 'арбуз');
$cache->call('slowFunction', $arr);
echo '<BR>';
$arr = array('яблоко', 'груша', 'арбуз');
медленная функция ($ арр);
функция медленная функция ($ арр = ноль)
{
echo "Функция, которая выполняется очень медленно: ( <br>";
echo "Текущее время" . date('MdY H:i:s A', time()) '<br>';
foreach ($arr как $fruit)
{
echo "Я съел $фрукт <br>";
}
)
?>
Ниже приведен результат выполнения сценария в примере:
функция, которая выполняется очень медленно.
Текущее время: 28 июля 2004 г., 17:15:57.
Я съел яблоко Я съел грушу Я съел арбуз
Функция, которая выполняется очень медленно :(
Текущее время: 28 июля 2004 г., 17:17:55.
Я съел яблоко Я съел грушу Я съел арбуз
В коде класс Cache/Function.php используется для выполнения функции буферизации. Переменная $cache — это объект Cache_Function, который использует файловое кэширование функций и хранится в каталоге $cacheDir. Для кэширования вызова функции следует использовать метод call() объекта Cache_Function $cache следующим образом: $cache->call('slowFunction', $arr);
Здесь вызывается функция SlowFunction() и параметр. представляет собой массив $arr. Эта функция кэшируется в файле в каталоге $cacheDir. Любые последующие вызовы этой функции будут иметь результат выполнения функции, возвращаемый $cache->call(). Кэширование и использование функций очень похоже на кэширование контента, поэтому я не буду вдаваться в подробности. Подробности см. в руководстве PEAR.