Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTTP1.0 vs HTTP1.1, на какую версию HTTP ориентироваться? 
:(
    Опции темы
Porshen
Дата 1.2.2007, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.6.2006

Репутация: нет
Всего: нет



Начав разбираться с meta-данными, я столкнулся с проблемой кеширования. Согласно спецификации протола HTTP1.0 для управления кэшированием есть только зоголовок PRAGMA. если оный заголовок отсутствует, то клиенту позволяется кешировать html-код, пришедший от сервера. Если устанавливать заголовок PRAGMA, то только в значение no-cache, что значит "не кэшировать данный документ.
Протокол HTTP1.1 предоставляет более удобные инструменты для управления кэшированием. Там доступны два заголовка EXPIRES (Дата устаревания документа) и CACHE-CONTROL. CACHE-CONTROL может быть установлен в значения public (документ кэшируется в доступных для всех кэшах), private (только в частном кэше), no-cache (не может быть кэширован) и no-store (может быть кэширован, но не сохраняется).

Я занимаюсь разработкой интернет-магазина на php и понимаю, что для большинства страниц нужно полностью отменить всякое кэширование, но для некоторых страниц кэширование было бы весьма кстати, хотя бы временное. Например, страница новостей, список товаров на складе не должны кэшироваться вовсе, а вот страницы с описание конкретного товара хорошо бы закэшировать, ведь описание и цена будут меняеться редко - не чаще раз в месяц. а страница "о компании" - еще более редко.

но есть проблема - на какой протокол ориентироваться? писать везде no-cache и не беспокоиться ни о чем, или подойти к страницам дифференцированно? но тогда как указать дату устаревания для клиентов, не поддерживающих HTTP1.1? Сегодня все браузеры способны работать с версией 1.1, но вот, например, в настройках Internet Explorer по умолчанию не установлен флажок "использовать HTTP1.1 через прокси-соединения".  А очень много людей сидят в интернете из локальной сети через прокси. Еще больше подключенных без прокси, но и тех и других много, и угодить нужно всем. Как быть? что писать в заголовках ?
PM MAIL   Вверх
Replicator
Дата 1.2.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 30.4.2006
Где: Outer Heaven

Репутация: нет
Всего: нет



А кто запрещает использовать все заголовки? Если браузер встретит незнакомый заголовок, он его просто отбросит. Вставляй все заголовки.

А вот насчет дифференцированного подхода интереснее. Подумай над тем, сколько времени ты потратишь на реализацию и какова будет выгода. Встает вопрос, а так ли оно надо? IMHO, лучше такие вопросы оставлять серверу на усмотрение.
--------------------
 
PM WWW ICQ   Вверх
Porshen
Дата 1.2.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.6.2006

Репутация: нет
Всего: нет



да никто не запрещает! так, вобщем то, все и делают. Но делают только в случае если устанавливают во всех трех заголовках отмену кэширования.

а насчет "надо ли мне это"... хм... вероятне всего нет, можно заставить сервер всегда грузить свежие данные и не пользоваться кэшем совсем, но .. блин.. эти же заголовки придуманы не просто так и должны использоваться по назначению где они к месту!

а про сложность - в движке, с которым я работаю можно, создавая класс новой страницы, одной строчкой переопределить один из мета-заголовков в базовом классе. итого на три заголовка - три строчки. не в сложности дело, а в правильности!

ну так что посоветуете еще ????
PM MAIL   Вверх
Greendrake
Дата 7.2.2007, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: 1
Всего: 6



Я поступил слудующим образом.
Во-первых, на HTTP1.0 забил (всем во всём всё равно не угодишь).
Во вторых, использую Conditional GET. То есть, страница кэшируется браузером, но по критериям E-Tag и Last-Modified проверяется — а не пора бы обновить. А там уже сервер решает, что отправить — обновлённую страницу, или 304 Not Modified.
PM MAIL   Вверх
Porshen
Дата 9.2.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 1.6.2006

Репутация: нет
Всего: нет



спасибо. изучим. а дополнительный функционал надо невешивать на апач? или как то настроить?

http://xpoint.ru/know-how/VebAlgoritmyi/Co...nalGet?comments


Это сообщение отредактировал(а) Porshen - 9.2.2007, 18:19
PM MAIL   Вверх
Greendrake
Дата 9.2.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: 1
Всего: 6



Цитата(Porshen @  9.2.2007,  18:18 Найти цитируемый пост)
а дополнительный функционал надо невешивать на апач? или как то настроить?

Да нет, у апача-то всё по умолчанию должно работать. Но это, естественно, тока для статичного контента.
А вот в скриптах логику «что отдать» — страничку, или код 304, придётся самому писать. Алгоритм такой: смотрим заголовки запроса (If-Modified-Since и If-None-Match). Если их нет, отдаем страницу безусловно. А если они есть, то решаем, будет ли сгенерированная страница им удовлетворять, или нет. Если нет, то отдаём её, уже с новыми E-Tag и Last-Modified. Ну а если да, то посылаем курить бамбук 304.

Это сообщение отредактировал(а) Greendrake - 9.2.2007, 22:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Продвижение и оптимизация сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.