|
|
|
| Хотел посмотреть, какую информацию предоставляет сервер о странице:
<?php
echo "<br>ENV " . $_ENV['HTTP_IF_MODIFIED_SINCE'];
echo "<br>SERVER" . $_SERVER['HTTP_IF_MODIFIED_SINCE'];
|
Но, почему то, ничего не выводится... | |
|
|
|
|
|
|
|
для: Владимир55
(29.01.2012 в 14:22)
| | Сервер не устанавливает в переменные окружения, все HTTP-заголовки, какие только видит. Устанавливаются только те, которые прописаны и которые разрешены администратором/разработчиком. В PHP вы их так просто не передадите, как минимум нужно установить переменную окружения на уровне .htaccess и модуля mod_rewrite. Однако, это еще не означает, что переменная окружения будет передана в скрипт. | |
|
|
|
|
|
|
|
для: cheops
(29.01.2012 в 14:39)
| | нужно установить переменную окружения на уровне .htaccess и модуля mod_rewrite. Однако, это еще не означает, что переменная окружения будет передана в скрипт.
То есть, и этого (корректировки .htaccess и mod_rewrite) недостаточно?
Что же ещё надо? | |
|
|
|
|
|
|
|
для: Владимир55
(29.01.2012 в 14:57)
| | Скажем так не всегда достаточно, обычно, у администратора есть возможность запретить или разрешить установку переменных окружений... на нормальном хостинге, я так понимаю это должно быть разрешено. Т.е вам нужно как-то через RewriteRule и E установить переменную окружения, при этом я так понимаю, надо сначала необходимо выцепить запрос с нужным HTTP-заголовоком при помощи RewriteCond и %{HTTP:header} (вместо header имя нужного заголовка). Вот только когда вы установите переменную окружения, её можно искать в $_ENV (лучше сначала в нем и сразу при помощи print_r()). Это конечно, при условии, что на уровне php.ini не запрещена установка переменных окружения... а то там любят ограничивать префиксом скажем PHP_. | |
|
|
|
|
|
|
|
для: cheops
(29.01.2012 в 15:31)
| | Не могли бы Вы испытать эти коды на Вашем хостинге?
Кажется, у Вас Мастерхост?
Любопытно было бы сравнить. | |
|
|
|
|
|
|
|
для: Владимир55
(29.01.2012 в 16:21)
| | Скорее всего лучше вообще локально начитать... Попробую чуть попозже. | |
|
|
|
|
 288 байт |
|
|
для: cheops
(29.01.2012 в 16:41)
| | Не могли бы Вы испытать эти коды на Вашем хостинге?
Кажется, у Вас Мастерхост?
Любопытно было бы сравнить.
Скорее всего лучше вообще локально начитать... Попробую чуть попозже.
Все ж таки, интересно было бы узнать, работает ли это на Мастерхосте. Можете попробовать (файл для теста в приложении)? | |
|
|
|
|
|
|
|
|
для: Владимир55
(29.01.2012 в 14:22)
| | Не отвечал, т.к. сам был не уверен... Теперь разобрался!
Дело в том, что браузер не всегда отправляет заголовок "if_modified".
Если со страницей были переданы заголовки запрещающие кеширование
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
| , а с динамическими страницами на правильно настроенных серверах они передаются по умолчанию, то браузер при обновлении и не пытается отправить "if-mod", т.к. в кеше этих страниц и нет.
А вот со статичными страницами иначе. Они передают заголовки разрешающие кеширование, поэтому браузер их сохраняет и потом перепроверяет.
Либо ситуация, в которой мне удалось выловить этот заголовок - у меня часть CSS генерируется в пхп. Т.е. на ЧПУ поступает запрос, например:
http://site.info/154/5059/thumb.css
| Реального такого файла, естественно, нету и mod_rewrite перекидывает запрос на в пхп генерируется css и отдаются заголовки
header("Content-type: text/css");
header("Last-Modified: Sun, 25 Dec 2011 10:00:00 +0400");
header("Cache-Control: private, max-age=2592000, pre-check=605000");
| поэтому при обновлении браузер передает заголовок IF-MOD и вот тогда он в этот пхп файл поступает в массиве
$_SERVER["HTTP_IF_MODIFIED_SINCE"] == "Sun, 25 Dec 2011 10:00:00 GMT"
|
Единственное, что могу добавить - УДАЧИ Вам )))))) | |
|
|
|