Примеры использования HTTP/1.1 304 Not Modified
Для разгрузки канала клиента за счет кеширования браузером страниц можно использовать следующий код, позволяющий браузеру не загружать те страницы, которые у него уже есть в кэше. Аналогично можно сделать и для изображений. C помощью директив файла .htaccess сделана настройка чтобы все файлы с сервера отправлялись через index.php:
<?php
global $url;
$url = $_SERVER['REQUEST_URI'];
if($url==""||$url=="/")
$url="index.htm" ;
else $url=substr($url, 1);
if ( !file_exists( $url ) ) { header("HTTP/1.0 404 Not Found"); exit();}
// Получаем время последней модификации кэш-файла
$lastModified = max(filemtime($url),filemtime('index.php')); $slastModified = gmdate('D, d M Y H:i:s', $lastModified) . ' GMT';
// Выдаём заголовок HTTP Last-Modified
header('Last-Modified: ' . $slastModified );
// Получаем заголовки запроса клиента - только для Apache
$headers = getallheaders();
if (isset($headers['If-Modified-Since'])) { // Разделяем If-Modified-Since (Netscape < v6 отдаёт их неправильно)
$modifiedSince = explode(';', $headers['If-Modified-Since']);
// Преобразуем запрос клиента If-Modified-Since в таймштамп
$modifiedSince = strtotime($modifiedSince[0]);
// Сравниваем время последней модификации контента с кэшем клиента
if ($lastModified <= $modifiedSince) { header('HTTP/1.1 304 Not Modified'); exit(); } // Разгружаем канал передачи данных!
}
echo "<DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n<HTML>\n";
echo "<HEAD>\n";
echo "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=windows-1251\">\n";
echo "<meta http-equiv=\"Last-Modified\" content=\"".$slastModified."\">\n";
?>
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_URI} !index\.php$
RewriteCond %{REQUEST_URI} !\.jpg$
RewriteCond %{REQUEST_URI} !\.gif$
RewriteCond %{REQUEST_URI} !\.png$
RewriteCond %{REQUEST_URI} !\.js$
RewriteCond %{REQUEST_URI} !\.txt$
RewriteCond %{REQUEST_URI} !\.xml$
RewriteCond %{REQUEST_URI} !\.html$
RewriteCond %{REQUEST_URI} !\.htm$
RewriteCond %{REQUEST_URI} !\.mid$
RewriteCond %{REQUEST_URI} !\.avi$
RewriteCond %{REQUEST_URI} !\.css$
RewriteRule ^(.*)$ /index.php [L]
Комментарии:
Нету комментариев для вывода...