Автор Тема: If-Modified-Since - как и с чем едят  (Прочитано 4240 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« : 09 Декабря 2004, 18:22:39 »
Гворят что ща уже не обманешь роботов путем

header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

типо ни по If-Modified-Since и If-None-Match проверяют
то есть отдают код если дата старая ну и соответственно если новая.

я чет не понял о чем это народ говорил.
может кто нить просветит?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #1 : 15 Декабря 2004, 15:48:04 »
к роботам If-Modified-Since не имеет никакого отношения.
это заголовки, отвечающие за кэширование.
И, в общем-то по хорошему, ими надо пользоваться.
если у тебя есть механизм определения даты изменения документа, то ты можешь вместо него отдавать только код Not Modified что повысит скорость работы и понизит загрузку сервера

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #2 : 15 Декабря 2004, 16:31:12 »
а если у меня динамические страницы - как тут определишь дату изменения документа?

я нашел такой вот код
$theDate = gmdate(\'D, d M Y H:i:s\',filemtime($_SERVER["SCRIPT_FILENAME"])).\' GMT\';
if ($theDate === $_SERVER["HTTP_IF_MODIFIED_SINCE"]){
   header("HTTP/1.x 304 Not Modified");
}
header(\'Last-Modified: \'.$theDate);

раньше я пользовался только Last-Modified

он ведь не будет верен для динамических сайтов
или я не прав?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #3 : 15 Декабря 2004, 16:47:20 »
Такой код - ЕСТЕСТВЕННО неверен. его писал идиот.
впрочем, одна его глупость компенсирует другую - вреда особого не будет.
но и пользы, как и смысла - в нем нет.

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #4 : 15 Декабря 2004, 17:04:34 »
а как тогда правильно нужно?
на данный момент я использую только
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

но эт только "врет" что мол документ был изменен сам как таковой
и только а вот как затронуть в динамических! страницах If-Modified-Since - не могу предоложить:)

RomikChef - не подскажешь?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #5 : 15 Декабря 2004, 18:48:14 »
сначала объясни - зачем тебе это надо.

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #6 : 16 Декабря 2004, 08:54:13 »
ну тыж сам писал

повысит скорость работы и понизит загрузку сервера

и

И, в общем-то по хорошему, ими надо пользоваться.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
If-Modified-Since - как и с чем едят
« Ответ #7 : 16 Декабря 2004, 12:37:32 »
не думаю, что пользоваться надо по-хорошему.
вполне можно и обойтись
если бы я озаботился таким вопросом, то технология решения такая.
1. решаем - а у нас вообще страница повторяется когда-нибудь? К примеру - текстовые ушки если есть, то кэшировать нет смысла.
2. если может повторяться, то определяем все источники текстов.
3. для всех источников заводим признак, который учитывает время изменения.
5. при обращении к странице смотрим на время и сравниваем его с пришедшим в иф модифиед. только не так дубово ,конечно, как в примере выше.

В реальности я себе представляю себе это дело так.
конечно же, имеет смысл заморачиваться, только если источник информации на странице один.
например - БД. в бд можно завести поле timestamp которое будет отслеживать изменения.

возьмем, к примеру, форум.
выводится дерево сообщений.
мы можем легко узнать дату самого последнего. и отдать нот модифиед или же саму страницу.

хотя это все - в теории.
в реальности сообщение из форума может быть УДАЛЕНО. то есть - форум измменился, а максимальная дата - нет. То есть надо все равно заводить никий глобальный параметр, который отслеживает ВСЕ изменения. Имхо, овчинка выделки не стоит

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
If-Modified-Since - как и с чем едят
« Ответ #8 : 16 Декабря 2004, 17:00:59 »
В реальности, многие динамические блоки (например голосование, ушки, календарь и другие маленькие блоки, которые часто меняются) можно подгружать яваскриптом (причем для этих подгружаемых блоков можно сделать свою проверку If-Modified-Since).
Обычно этих динамических блоков не так много (если это не супер-пупер портал), так что не все так страшно.
К тому же не на все страницы сайта надо(можно) делать такое кеширование
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28