#?SuikaWiki/0.9 [[#comment]] * 仕様書から ** RFC 2068・2616 (HTTP/1.1) 12.2 Agent-driven Negotiation > With agent-driven negotiation, selection of the best representation for a response is performed by the user agent after receiving an initial response from the origin server. Selection is based on a list of the available representations of the response included within the header fields [DEL[(this specification reserves the field-name Alternates, as described in appendix 19.6.2.1)]] or entity-body of the initial response, with each representation identified by its own URI. Selection from among the representations may be performed automatically (if the user agent is capable of doing so) or manually by the user selecting from a generated (possibly hypertext) menu. [DFN[エージェント駆動折衝]]では、[[利用者エージェント]]は[[起源サーバー]]から最初の[[応答]]を受信した後で最善の[[表現]]の選択を行います。 最初の応答の[[頭欄]]又は [CODE(ABNF)[[[entity-body]]]] の中には、それ自身の [[URI]] で識別される利用可能な表現の一覧が含まれていて、 これに基づいて選択します。 [DEL[(この仕様書は [CODE(HTTP)[[[Alternate]]]] という欄名を予約しています。)]] 表現の選択は (利用者エージェントにそうする能力があれば) 自動的に行っても構いませんし、 (おそらく[[ハイパーテキスト]]で) 生成されたメニューから[[利用者]]が手動で選択しても構いません。 > Agent-driven negotiation is advantageous when the response would vary over commonly-used dimensions (such as type, language, or encoding), when the origin server is unable to determine a user agent's capabilities from examining the request, and generally when public caches are used to distribute server load and reduce network usage. エージェント駆動折衝は、応答が広く使われている次元 (型、[[言語]]、[[符号化]]など) によって変化する場合や、 起源サーバーが要求を検査しても利用者エージェントの能力を決定できない場合や、 サーバーの負荷を分散させたりネットワークの使用を削減するために公開キャッシュが使われている一般的な場合に有利です。 > Agent-driven negotiation suffers from the disadvantage of needing a second request to obtain the best alternate representation. This second request is only efficient when caching is used. In addition, this specification does not define any mechanism for supporting automatic selection, though it also does not prevent any such mechanism from being developed as an extension and used within HTTP/1.1. エージェント駆動折衝は、最善の代替表現を得るために二番目の要求を必要であるという欠点があります。 この二番目の要求はキャッシュが使われているときだけ有効です。 加えて、この仕様書は自動的選択に対応する機構を定義していません。 但し、そのような機構を拡張として開発して [[HTTP/1.1]] で使うことも妨げてはいません。 > HTTP/1.1 defines the 300 (Multiple Choices) and 406 (Not Acceptable) status codes for enabling agent-driven negotiation when the server is unwilling or unable to provide a varying response using server-driven negotiation. HTTP/1.1 は、[[サーバー駆動折衝]]を使って変化させた応答を提供するつもりがないか、 それができないときにエージェント駆動折衝を有効化する、 [CODE(HTTP)[[[300]]]] (複数選択肢) と [CODE(HTTP)[[[406]]]] (受け入れ不能) の2つの[[状態符号]]を定義しています。 *** 12.3 Transparent Negotiation > Transparent negotiation is a combination of both server-driven and agent-driven negotiation. When a cache is supplied with a form of the list of available representations of the response (as in agent-driven negotiation) and the dimensions of variance are completely understood by the cache, then the cache becomes capable of performing server-driven negotiation on behalf of the origin server for subsequent requests on that resource. [DFN[透過折衝]]は、[[サーバー駆動折衝]]と[[エージェント駆動折衝]]の2つの組合せです。 [[キャッシュ]]が (エージェント駆動折衝として) 応答の利用可能な表現の一覧の形で供給された時は、 キャッシュはその資源についてサーバー駆動折衝応答ができるようになります。 > Transparent negotiation has the advantage of distributing the negotiation work that would otherwise be required of the origin server and also removing the second request delay of agent-driven negotiation when the cache is able to correctly guess the right response. 透過折衝には、本来起源サーバーが必要であった折衝を分散させることができ、 キャッシュが正しい応答を正しく推測できるならエージェント折衝の二番目の要求の[RUBY[間] [ま]]をなくすこともできるという利点があります。 > This specification does not define any mechanism for transparent negotiation, though it also does not prevent any such mechanism from being developed as an extension [DEL[and]] [INS[that could be]] used within HTTP/1.1. [DEL[An HTTP/1.1 cache performing transparent negotiation MUST include a Vary header field in the response (defining the dimensions of its variance) if it is cachable to ensure correct interoperation with all HTTP/1.1 clients. The agent-driven negotiation information supplied by the origin server SHOULD be included with the transparently negotiated response.]] この仕様書は、透過折衝の機構を定義していません。 しかし、そのような機構を HTTP/1.1 で使うことのできる拡張として開発することを妨げてもいません。 [DEL[透過折衝を行う HTTP/1.1 キャッシュは、応答がキャッシュ可能であるなら、全ての HTTP/1.1 クライアントに正しく解釈されるようにするため、その応答中に (変化の次元を定義する) [CODE(HTTP)[Vary]] 頭欄を含めなければ'''なりません'''。起源サーバーにより供給されるエージェント折衝情報は透過折衝した応答に含める'''べきです'''。]] ** RFC の部分の License [[RFCのライセンス]] * メモ [1] [Q[[ABBR[UA][利用者エージェント]]駆動折衝]]と訳した方が良いのかも・・・とか思いつつ。 ([[名無しさん]])