ПРОТОКОЛ ПЕРЕДАЧИ ГИПЕРТЕКСТА -- HTTP / 1.1 |
||||
---|---|---|---|---|
12.1 Управляемое сервером обсуждение. Обсуждение называется управляемым сервером, если выбор самого лучшего представления для ответа произведен алгоритмом, размещенным на сервере. Выбор основан на доступных представлениях ответа (они могут различаться по нескольким характеристикам; например языку, кодированию содержимого (content-coding), и т.д.) и содержании специфических полей заголовка в сообщении запроса, или на другой информации, имеющей отношение к запросу (такой как сетевой адрес клиента). Управляемое сервером обсуждение выгодно, когда алгоритм выбора из числа доступных представлений трудно описать агенту пользователя, или когда сервер желает послать "лучшее предположение" клиенту одновременно с первым ответом (надеясь избежать задержки пересылки туда и обратно последующего запроса, если "лучшее предположение" устроит пользователя). Чтобы улучшить предположение сервера, агент пользователя МОЖЕТ включать поля заголовка запроса (Accept, Accept-Language, Accept-Encoding, и т.д.), которые описывают предпочтительный ответ. Управляемое сервером обсуждение имеет недостатки: 1. Сервер не может точно определить, что могло бы быть "самым лучшим" для данного пользователя, так как это требует полного знания, как возможностей агента пользователя, так и целей использования ответа (например, пользователь хочет просматривать его на экране или печатать на бумаге?). 2. Наличие описания возможностей агента пользователя в каждом запросе может быть очень неэффективным (при условии, что только небольшой процент ответов имеет несколько представлений) и потенциально нарушает секретность пользователя. 3. Оно усложняет реализацию первоначального сервера и алгоритмов генерации ответов на запрос. 4. Оно может ограничивать способность общего кэша использовать один и тот же ответ для запросов нескольких пользователей. HTTP/1.1 включает следующие поля заголовка запроса (request-header), которые обеспечивают управляемое сервером обсуждение посредством описания возможностей агента пользователя и предпочтений самого пользователя: Accept (раздел 14.1), Accept-Charset (раздел 14.2), Accept-Encoding (раздел 14.3), Accept-Language (раздел 14.4), and User-Agent (раздел 14.42). Однако первоначальный сервер не ограничен этим и МОЖЕТ изменить ответ, основываясь на любом аспекте запроса, включая информацию, которая не содержится в полях заголовка запроса или информацию из расширенных полей заголовка, не определенных в этой спецификации. Первоначальный сервер HTTP/1.1 ДОЛЖЕН включать соответствующее поле заголовка Vary (раздел 14.43) в любой кэшируемый ответ, основанный на управлямом сервером обсуждении. Поле заголовка Vary описывает характеристики, которые могут меняться в ответе (то есть характеристики, согласно которым первоначальный сервер выбирает "наилучший" ответ из нескольких представлений). Общие HTTP/1.1 кэши ДОЛЖНЫ распознать поле заголовка Vary, если он присутствует в ответе, и отвечать требованиям, описанным в разделе 13.6, который описывает взаимодействия между кэшированием и обсуждением содержимого. |