Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выдача кода состояния 304 за HTTP-запрос If-Modified-Since
 
 автор: Владимир55   (27.01.2012 в 19:08)   письмо автору
 
 

В инструкции Яндекса можно прочесть следующее:
"настройте сервер на выдачу корректных заголовков ответов - если поступил запрос If-Modified-Since, то выдавать код 304, если страница с указанной в запросе даты не изменялась".

Как можно осуществить такую настройку?

  Ответить  
 
 автор: Sfinks   (27.01.2012 в 21:26)   письмо автору
 
   для: Владимир55   (27.01.2012 в 19:08)
 

по моему яндекс хочет вообще не работать. Вернее работать ничего не делая. Это не только у яндекса голубая мечта =)

А по теме - на статичные файлы апач и так возвращает 304 если файл не изменился. А на динамические страницы для осуществления такой проверки , особенно если это форум или что-то еще такое же динамичное, для такой проверки нужно еще пол сайта написать. По крайней мере определить что и когда на страницу добавлено, а если на странице отображается инфа в обратном хронологическом порядке, то при добавлении сообщения на первую страницу меняются все последующие...... Короче это жесть. Яндекс по-моему этого не достоен.

Но если это статичная статья, которая точно не меняется с момента написания, но выдается через PHP, можете отдать ему
header("HTTP/1.1 304 Not modified");

  Ответить  
 
 автор: Владимир55   (27.01.2012 в 22:33)   письмо автору
 
   для: Sfinks   (27.01.2012 в 21:26)
 

Так:
<?php
header
("HTTP/1.1 304 Not modified");
?>
<html>

<head>
  <title>ПРимет</title>
</head>

<body>
</body>

</html>

  Ответить  
 
 автор: cheops   (27.01.2012 в 22:56)   письмо автору
 
   для: Владимир55   (27.01.2012 в 22:33)
 

Так, боюсь, все-равно отошлет код 200... лучше бы эту проблему решить на уровне .htaccess и какого-нибудь модуля, будет надежнее.

  Ответить  
 
 автор: Владимир55   (27.01.2012 в 23:06)   письмо автору
 
   для: cheops   (27.01.2012 в 22:56)
 

А на уровне .htaccess как это сделать?

(Сайт без использования ЦМС).

  Ответить  
 
 автор: Sfinks   (27.01.2012 в 23:07)   письмо автору
 
   для: cheops   (27.01.2012 в 22:56)
 

C ПХП это на уровне апача никак не решишь, т.к. изменилась страница или нет придется через БД проверять.

  Ответить  
 
 автор: Владимир55   (27.01.2012 в 23:21)   письмо автору
 
   для: Sfinks   (27.01.2012 в 23:07)
 

C ПХП это на уровне апача никак не решишь

Можно на странице писать дату создания. Или в комментариях, или в специальных тегах, или напрямую (пусть посетители видят - не страшно). Так что, дата будет известна.

И что тогда?

  Ответить  
 
 автор: Sfinks   (28.01.2012 в 00:26)   письмо автору
 
   для: Владимир55   (27.01.2012 в 23:21)
 

> Можно на странице писать дату создания. Или в комментариях, или в специальных
> тегах, или напрямую (пусть посетители видят - не страшно). Так что, дата будет известна.

А это уже с заголовком 304 никак не связано и яндекс не устроит.

  Ответить  
 
 автор: Sfinks   (28.01.2012 в 00:23)   письмо автору
 
   для: cheops   (27.01.2012 в 22:56)
 

Нет, я проверил, отсылает 304 и браузер верит и не обновляет....
Другой вопрос как узнать в ПХП, что яндекс послал "if modified" и дату....
Вот этого я пока не нашел.

  Ответить  
 
 автор: Владимир55   (28.01.2012 в 09:19)   письмо автору
 
   для: Sfinks   (28.01.2012 в 00:23)
 

Другой вопрос как узнать в ПХП, что яндекс послал "if modified" и дату....

Может быть, так?
<?php
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))



Нет, я проверил, отсылает 304 и браузер верит и не обновляет....

Какими средствами можно провести такую проверку?

  Ответить  
 
 автор: demon51085   (15.01.2016 в 16:58)   письмо автору
 
   для: Владимир55   (28.01.2012 в 09:19)
 

Проверять можно на сайте http://last-modified.com/ru/

  Ответить  
 
 автор: demon51085   (15.01.2016 в 16:57)   письмо автору
 
   для: cheops   (27.01.2012 в 22:56)
 

Тема конечно старая, но может кому пригодится.
Чтобы не отсылал 200, нужно после отправки 304 заголовка сделать exit().

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования