Повторите попытку-после заголовка ответа HTTP-влияет ли это на что-нибудь?
Если я хочу вежливо отказаться от обслуживания на веб-сайте из-за временной перегрузки, ответ HTTP 503 Служба Недоступна представляется целесообразным. В спецификации упоминается отправка повтор-после заголовок 503.
есть ли смысл? Повторная попытка влияет на что-нибудь? Браузеры обращают на это внимание?
4 ответов:
насколько мне известно, ни один браузер не обращает внимания на . Прокси и кэши могут, нопо-видимому, некоторые браузеры теперь включают некоторый уровень поддержки
Retry-After(хотя поддержка все еще сомнительна в лучшем случае). Я не совсем уверен в пользе этого в браузере; как правило, считается плохой идеей кэшировать сбои. Но если вы знаете, когда вы будете принимать запросы снова, говоря клиенту не может повредить. (Если вы вернетесь однако раньше, чем ожидалось, любая программа, которая действительно чтит заголовок, должна предположить-и сообщить-что сайт все еще не работает.)наиболее очевидным преимуществом является то, что, похоже, Googlebot (и, возможно, другие пауки) обратят внимание на заголовок, если он есть, что может удержать его от отмены индексации страницы на некоторое время.
со всем, что сказал...если это тривиально добавить, и вы можете придумать достаточно точную оценку того, когда услуга будет доступна, перейдите оно. Но я бы не советовал вам делать это изо всех сил. В любом случае это только совет, и неправильное время может вызвать больше проблем, чем вообще не включать заголовок.
текущее состояние Повтор-После заголовок
реализация Повтор-После заголовок в клиентах и серверах немного изменился за последние годы с момента первоначальной публикации этого вопроса. Поэтому я подумал, что дам обновленный ответ.
во-первых, RFC 2616,раздел 14.37 повторите попытку-после гласит:
поле Retry-After response-header можно использовать с 503 (Service Недоступно) ответ, указывающий, как долго служба будет недоступна запрашивающему клиенту.
...
два примера его использования
Retry-After: Fri, 31 Dec 1999 23:59:59 GMT Retry-After: 120в последнем примере, задержка 2 минуты.
поддержка в клиентском и серверном программном обеспечении
ниже приведены сообщения о фиксации репозитория кода, объявления и документация, касающаяся Повтор-После в различных программное обеспечение.
Хром/Хром
фиксация кода 22 ноября 2012 года с сообщением журнала: добавлены таймауты обнаружения и использование Retry-After http header.
Mozilla / Firefox
код фиксации на 27 марта 2012 года с журналом messeage:реализуйте обработку 5xxs, X-Weave-Backoff, Retry-After. Кроме того, есть три других упоминания о Retry-After header в их ртути хранилище.
ошибка была первоначально представлена 6 января 2004 года с названием повторить попытку-после отправки с HTTP 503 ответ игнорируется.
Googlebot
в статье блога Google Webmaster Central о работе с простоем сайта упоминается, что Retry-After заголовок может быть использован, чтобы определить, когда перерисовывать URL.
Bingbot / Msnbot
не удалось найти ни одного официального документа поддержки повтора. Однако в случайных форумах было несколько упоминаний об использовании этого заголовка в ответе 503 на дроссельные боты Microsoft.
Nginx
The директива add_header гласит:
добавляет указанный поля в заголовке ответа при условии, что код ответа равен 200, 201, 204, 206, 301, 302, 303, 304, или 307.
поэтому, чтобы добавить заголовок Retry-After для ответа 503 с помощью версия:
1.7.4 и более ранние, использовать модули сторонних производителей, таких как Заголовки Более.
1.7.5 и выше, добавьте до
Я вижу это как проблему с курицей и яйцом: никакие браузеры в настоящее время не реализуют повторную попытку, поскольку никакие веб-сайты не беспокоятся. На мой взгляд, идти вперед и отправить его в качестве услуги для пользователей. Если их выбор веб-браузера не реализует его, то это их браузер просто не дает им полезной информации. Ты сделал это!
при реализации стандартов, которые имеют несколько конкурирующих реализаций, я всегда стараюсь придерживаться стандартов и не обращать внимание на разных реализации (если я специально не пытаюсь эмулировать реализацию, такую как завивка, но маскировка моих заголовков, чтобы они выглядели как веб-браузер). В противном случае мы получаем стандарты defacto, которые, если вы помните дни IE-dominence, вы не хотите!
Если вы хотите отправить автоматическое обновление после X раз, вы можете отправить
Refresh: 120; url=http://your_url.comв PHP:
header("Refresh: " .$retry_time."; url=". $url);для обновления текущей страницы вы можете использовать
$_SERVER["REQUEST_URI"]для $ url.я успешно протестировал этот заголовок в разных версиях Opera, Firefox и Internet Explorer.
этот заголовок даже работает для обновления двоичного содержимого, такого как изображения (но только тогда, когда загружается непосредственно или в кадре - IMG-тег не перезагружается).
Comments