Artisan

Artisan
Рейтинг
377
Регистрация
04.03.2005
Пишу программы для вычислительных машин, от драйверов устройств, до сложных систем для работы с большим количеством знаний. Умею бережно использовать железо, и другие ресурсы.
Как писал Bomass
Подобные конструкции че-то никак в Г не прокатывают

Спросите у Google запрос ниже и сами убедитесь в том что такие адреса он понимает.

site:searchengines.ru

Как писал mnt
будьте острожны с ie и обработкой If-Modified-Since помнится год назад до сервис паков, там это глючило по черному.

Стандарт позволяет вообще не обрабатывать If-Modified-Since

Как писал Dubrovin
"Открываешь РамблЁр и там вываливается куча сайтОв".

Возможно это просто отличительная особенность группы людей то есть жаргон или слэнг. Одно время в Москве продавцы компьютеров IBM AT вместо Ай Би Эм Эй Ти говорили Ай Би Эм Ай Ти при этом зная как говорить правильно что позволяло им быстро узнавать своих. Точно так же моряки говорят компАс, математики говорят комплЕксные числа, таких примеров можно найти очень много.

Как писал Dubrovin
начнут выражать свои мысли более лаконично.

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

Как писал yas
Еще раз уточню:
Если head + If-Modified-Since то проверяю и если не изменен, то отдаю что не измене и ничего не выдаю да?

В стандарте написано SHOULD то есть 304 выдавать вообще не обязательно и для надежности при запросе HEAD можно всегда выдавать 200 то есть статус нормальное выполнение (или вообще не выдавать статус если Ваш HTTP сервер сам добавляет к выдаче статус нормального выполнения) и опять же только заголовки то есть позволить запросившей программе самой разбираться с заголовками и решать что ей надо от документа. А в ответ на запрос GET всегда можно выдать статус 200 и заголовки а за ними весь документ. В любом случае некоторые заголовки добавит сам HTTP сервер и вообще при любом запросе подходящие по случаю заголовки выдавать всегда желательно в ответ на любой запрос а не ограничиваться только статусом.

Как писал yas
То вслучае, если кеш то пошлеться head и контент возьметься из кеша браузера. В другом случае если head то это бот!
Так?

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

Как писал yas
Artisan, то есть можно напоросться) Жалко, а если отдать такоей header и контент, то бот индекснет да?

Если у Вас сам броузер запрашивает только HEAD то зачем совать ему еще и сам документ? Делайте то и только то что написано в стандарте и будет Вам счастье.

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

Если используем CGI (а PHP делает похоже) то переменная окружения REQUEST_METHOD (которая у PHP в стандартном массиве) а если нет то можно самому разбирать запрос или использовать другие способы которые зависят от HTTP сервера и способа выполнения программы пользователя.

Идентификаторы ботов здесь ни при чем.

Согласно HTTP/1.1 стандарту

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

запрос GET без условий = отдать весь документ,

запрос HEAD без условий = отдать только заголовки,

и есть дополнительные условия.

14.25 If-Modified-Since

The If-Modified-Since request-header field is used with a method to make it conditional: if the requested variant has not been modified since the time specified in this field, an entity will not be returned from the server; instead, a 304 (not modified) response will be returned without any message-body.

If-Modified-Since = "If-Modified-Since" ":" HTTP-date

An example of the field is:

If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

A GET method with an If-Modified-Since header and no Range header requests that the identified entity be transferred only if it has been modified since the date given by the If-Modified-Since header. The algorithm for determining this includes the following cases:

a) If the request would normally result in anything other than a
200 (OK) status, or if the passed If-Modified-Since date is
invalid, the response is exactly the same as for a normal GET.
A date which is later than the server's current time is
invalid.

b) If the variant has been modified since the If-Modified-Since
date, the response is exactly the same as for a normal GET.

c) If the variant has not been modified since a valid If-
Modified-Since date, the server SHOULD return a 304 (Not
Modified) response.

The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead.

Note: The Range request-header field modifies the meaning of If-
Modified-Since; see section 14.35 for full details.

Note: If-Modified-Since times are interpreted by the server, whose
clock might not be synchronized with the client.

Note: When handling an If-Modified-Since header field, some
servers will use an exact date comparison function, rather than a
less-than function, for deciding whether to send a 304 (Not
Modified) response. To get best results when sending an If-
Modified-Since header field for cache validation, clients are
advised to use the exact date string received in a previous Last-
Modified header field whenever possible.

Note: If a client uses an arbitrary date in the If-Modified-Since
header instead of a date taken from the Last-Modified header for
the same request, the client should be aware of the fact that this
date is interpreted in the server's understanding of time. The
client should consider unsynchronized clocks and rounding problems
due to the different encodings of time between the client and
server. This includes the possibility of race conditions if the
document has changed between the time it was first requested and
the If-Modified-Since date of a subsequent request, and the

possibility of clock-skew-related problems if the If-Modified-
Since date is derived from the client's clock without correction
to the server's clock. Corrections for different time bases
between client and server are at best approximate due to network
latency.

The result of a request having both an If-Modified-Since header field and either an If-Match or an If-Unmodified-Since header fields is undefined by this specification.

www.yandex.ru = доступен

www.ya.ru = висит

Как писал Sebastano
Мне удобно, что бы всё было на одном домене.

А Вы сайт делаете для себя или для пользователей? Если для себя то можно его и в Сеть не заливать а на своей машине оставить.

Всего: 5936