Ветеран
Сообщения: 640
Благодарности: 2
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
PHP код:
<?php
// Подключаем PEAR::Cache_Lite
require_once 'Cache/Lite.php';
// Определяем настройки Cache_Lite
$options = array(
'cacheDir' => './cache/'
);
// Инициализируем Cache_Lite
$cache = new Cache_Lite($options);
// Некоторые фиктивные данные для хранения
$id = 'MyCache';
// Инициализируем кэш, если страница запрошена впервые
if (!$cache->get($id)) {
$cache->save('Dummy', $id);
}
// Рандомизатор…
$random = array(0, 1, 1);
shuffle($random);
// Произвольное обновление кэша
if ($random[0] == 0) {
$cache->save('Dummy', $id);
}
// Получаем время последней модификации кэш-файла
$lastModified = filemtime($cache->_file);
// Выдаём заголовок HTTP Last-Modified
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $lastModified) . ' GMT');
// Получаем заголовки запроса клиента – только для Apache
$request = getallheaders();
if (isset($request['If-Modified-Since'])) {
// Разделяем If-Modified-Since (Netscape < v6 отдаёт их неправильно)
$modifiedSince = explode(';', $request['If-Modified-Since']);
// Преобразуем запрос клиента If-Modified-Since в таймштамп
$modifiedSince = strtotime($modifiedSince[0]);
} else {
// Устанавливаем время модификации в ноль
$modifiedSince = 0;
}
// Сравниваем время последней модификации контента с кэшем клиента
if ($lastModified <= $modifiedSince) {
// Разгружаем канал передачи данных!
header('HTTP/1.1 304 Not Modified');
exit();
}
echo 'Сейчас ' . gmdate('H:i:s') . ' по Гринвичу<br />';
echo '<a href="' . $_SERVER['PHP_SELF'] . '">Обновить</a><br />';
?>
Vlad Drakula ты меня откровенно радуешь -lol-
|
-------
Основы HTML | Конференции
Отправлено: 00:13, 11-05-2005
| #13
|