Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать Мой Netadmin.ws   
// Сегодня Вторник, 12 Декабря 2017 года. Текущее время: 15:16:22 Зарегистрироваться  
Главное меню
· Главная
· Web ClipArt
· Форум
· Поиск
· Публиковать
· Рекомендовать
· Статистика
· Топ 10

Темы
· Базы Данных
· Графика
· Все о VBulletin
· Веб сайт
· Веб Скрипты
· Безопасность
· Интернет
· Программирование
· Новости Сайта
· Операционные системы
· Multimedia online
· Сборник рецептов
· Серверы

Не пропустите
· Футбол


Текущие версии
Apache 1.3.34
tarball Win32 Binary

Apache 2.0.55
tarball Win32 Binary

MySQL 4.1.16
tarball zip

MySQL 5.0.17
tarball zip

PHP 4.4.1
tarball zip

PHP 5.1.1
tarball zip

Perl 5.8.7
tarball win

// 20-12-2005

Кто в онлайне
На данный момент, 3 гость (ей) и 0 пользователь (ей) находятся на сервере.

Вы анонимный пользователь. Для регистрации воспользуйтесь этой ссылкой


Анекдот
Два нарка выходят с конопляного поля. Один вдруг видит улитку и с остервинением давит ее.
- Ну что она тебе, братан, сделала? - спрашивает другой.
- Да задолбала, целый день за мной бегает!


Статьи: If-Modified-Since, если PHP не установлен как модуль Apache
Программированиеnickspring пишет,
Наверное, каждый веб-программист, интересующийся кешированием веб-страниц на стороне клиента, знает о таких заголовках HTTP, как «If-Modified-Since» и «If-None-Match». Данные заголовки отправляются браузером при обращении к странице, которая имеется в его кеше. Для правильной организации кеширования на стороне клиента, серверному приложению необходимо отправлять заголовок «HTTP/1.0 304 Not Modified» и прекращать передачу данных в случае, если содержимое запрашиваемой страницы не изменилось с того момента времени, которое указано в присланном заголовке «If-Modified-Since».

Основная проблема при реализации кеширования на стороне клиента заключается в том, чтобы получить содержимое заголовка «If-Modified-Since». Вызвана она тем, что по умолчанию указанный заголовок доступен из серверного приложения только в том случае, если интерпретатор PHP установлен в качестве модуля Apache, что бывает крайне редко на серверах организаций, предлагающих услуги хостинга (по соображениям безопасности и удобства перекомпиляции PHP). Следует заметить, что кеширование на стороне клиента благотворно влияет не только на нагрузку веб-сервера, но и на скорость индексации веб-сайта поисковыми машинами. В связи с этим, опытные SEO-специалисты упорно ищут и рекомендуют «правильные» хостинговые компании.

На самом деле, существует универсальное решение данной проблемы, не требующее вмешательства в глобальную конфигурацию веб-сервера и работающее даже в том случае, когда PHP не установлен в качестве модуля Apache. Для применения данного метода необходимо и достаточно, чтобы выполнялись следующие условия:

* возможность конфигурации через файлы .htaccess;
* доступность и возможность использования модуля mod_rewrite;
* в серверном приложении к заголовкам «If-Modified-Since» и «If-None-Match» необходимо обращаться через массив $_SERVER, а не при помощи функций getallheaders или apache_request_headers (эти функции доступны только в том случае, если PHP установлен в качестве модуля Apache).

Итак, для реализации доступа к заголовкам «If-Modified-Since» и «If-None-Match» необходимо в корневом каталоге веб-сайта поместить файл .htaccess следующего содержания:

RewriteEngine On
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

После этого, необходимые заголовки будут доступны как $_SERVER['HTTP_IF_MODIFIED_SINCE'] и $_SERVER['HTTP_IF_NONE_MATCH']. В случае если на веб-сайте mod_rewrite используется для формирования «красивых» URL, содержимое .htaccess примет вид:

# url rewriting
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA]

# If-Modified-Since (if php is not installed as cgi then comment lines below)
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]

Следует заметить, что заголовки «If-Modified-Since» и «If-None-Match» не отправляются браузером, если в предыдущих запросах к данной странице он не получал в ответе веб-сервера заголовок «Last-Modified». Кроме того, при использовании в веб-приложении сессий с установками по умолчанию, указанные заголовки также не будут присылаться браузером. Для того чтобы избежать такого поведения браузера, необходимо перед запуском сессии выполнять функцию session_cache_limiter, передавая в качестве аргумента параметр 'private_no_expire':

<?php

session_cache_limiter('private_no_expire');
session_start();

?>

Описанный механизм передачи заголовков успешно применен и проверен на сайте нашей компании.

Раздел: Программирование | Автор: nickspring | Опубликовал: polo 19.06.2006 11:08

 
Авторизация
Имя пользователя
Пароль
Хотите зарегистрироваться?

Смотрите также
· Форум по теме
· Больше о Программирование
· Новости от nickspring
· PHP HomePage
· Apache Web Server


Самое читаемое в разделе "Программирование":
GET и POST - чем отличаются, как использовать, вопросы безопасности


Версия для печати  Отправка статьи/новости другу

Статьи: If-Modified-Since, если PHP не установлен как модуль Apache | Вход/Создание аккунта | всего комментариев: 0
Настройка
Комментарии принадлежат их авторам. Мы не несем ответственность за их содержание.
  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
 ©NetAdmin.ws 2001