AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Примеры использования HTTP/1.1 304 Not Modified

Для разгрузки канала клиента за счет кеширования браузером страниц можно использовать следующий код, позволяющий браузеру не загружать те страницы, которые у него уже есть в кэше. Аналогично можно сделать и для изображений. C помощью директив файла .htaccess сделана настройка чтобы все файлы с сервера отправлялись через index.php:
$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]

Подробнее о .htaccess можно почитать здесь


.

© Copyright 2008-2016 by KDG