If-Modified-Since как обрабатывать на php?

Тема в разделе "PHP", создана пользователем dandandan, 13 мар 2011.

Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Вычитал в доках у гугла:
    Как такую штуку можно реализовать на php? Как узнать что выполняется такой запрос? Как дать правильный ответ на запрос? Нужно ли после ответа на такой запрос выводить содержимое страницы или достаточно делать просто
    PHP:
    exit;
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
    header('тут твой заголовок');
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Чтобы передать в хедере что-то важное, нужно знать о запросе: изменился ли документ? Если его никак не отловить, то бессмысленная эта затея.
     
  4. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    Если сервер отдает 304 Not Modified на том, что не менялось - значит все работает как нужно тебе и гуглу.
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Вообще сервер должен код 200 отдавать по умолчанию.
     
  6. propovednik

    propovednik Постоялец

    Регистр.:
    16 май 2008
    Сообщения:
    104
    Симпатии:
    21
    По какому такому умолчанию? По RFC 2616?
    Сообщение абсолютно не по теме, человека интересует только If-modified-since
     
  7. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    обычно это требуется, если статика отдается через php(c кодом 200)
    без php apache ставит все хедеры автоматом

    PHP:
    $f_name='page.html';

    $f_time=filemtime($f_name); $f_etag=md5_file($f_name);
    if(
    strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])==$f_time OR $_SERVER['HTTP_IF_NONE_MATCH']==$f_etagheader("HTTP/1.1 304 Not Modified");
    else { 
    header("Last-Modified: ".gmdate("D, d M Y H:i:s",$f_time)." GMT"); header("Etag: ".$f_etag); readfile($f_name); }

    exit;
     
    dandandan нравится это.