<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <dfn xml:lang="en"><abbr>RVSA<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Remote Variant Selection Algorithm</title></abbr></dfn>
(<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">遠隔異体選択アルゴリズム</anchor></dfn>) は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">透過内容折衝</anchor>において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>に代わって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>を選択する標準化された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アルゴリズム</anchor>です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal>, <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src>。</p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">RFC 2295 - Transparent Content Negotiation in HTTP</cite> (<time>2014-08-31 19:36:42 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2295#section-5.7">http://tools.ietf.org/html/rfc2295#section-5.7</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en">RFC 2295 - Transparent Content Negotiation in HTTP</cite> (<time>2014-08-31 19:36:42 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2295#page-7">http://tools.ietf.org/html/rfc2295#page-7</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <strong><cite xml:lang="en">RFC 2295 - Transparent Content Negotiation in HTTP</cite> (<time>2014-08-31 19:36:42 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2295#section-7">http://tools.ietf.org/html/rfc2295#section-7</anchor-external></strong><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <cite xml:lang="en">RFC 2295 - Transparent Content Negotiation in HTTP</cite> (<time>2014-08-31 19:36:42 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2295#section-7.1">http://tools.ietf.org/html/rfc2295#section-7.1</anchor-external></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <cite xml:lang="en">RFC 2295 - Transparent Content Negotiation in HTTP</cite> (<time>2014-08-31 19:36:42 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2295#section-8.4">http://tools.ietf.org/html/rfc2295#section-8.4</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">RFC 2296 - HTTP Remote Variant Selection Algorithm -- RVSA/1.0</cite> (<time>2014-09-15 15:43:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc2296">http://tools.ietf.org/html/rfc2296</anchor-external></li></ul></refs></section><section><h1>版番号</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RVSA</anchor> のアルゴリズムは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">版番号</anchor>によって区別されることとなっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">版番号</anchor>は、
1桁から4桁の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII数字</anchor>列2つを <code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.</anchor></code> で区切ったものとされています。</p><figure class="railroad"><ol><li>1-4 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII数字</anchor></li><li><code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.</anchor></code></li><li>1-4 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII数字</anchor></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 数字列の解釈方法は明記されていません。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">先導0</anchor>や末尾の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</anchor>の有無が等価性に影響を与えるのかどうか不明です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 最初の番号が同じ場合、最後の番号が 0 より大きいなら、 0 の場合の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アルゴリズム</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下方互換</anchor>でなければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>。ここで<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">下方互換</anchor>とは、同じ入力に対して同じ、またはより良い結果を返すことを言います。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 版番号は次の場面で使われます。<figure class="short list"><ul><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proxy-rvsa</anchor></code></li><li><code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Negotiate:</anchor></code></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Negotiate:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">指令</anchor>として指定された場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">遠隔異体選択アルゴリズム</anchor>を実行することを認めることを表します。
この場合、指定された版か、指定されたのと1つ目の番号が同じで、
2つ目の番号がより大きな版が認められたこととなります。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>は、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Negotiate:</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>に版番号が指定され、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">隣接異体</anchor>を選ぶのに十分な情報があれば、
これを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択応答</anchor>として返すことができます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Negotiate:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>に版番号が指定された場合、
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">trans</anchor></code> を暗示します <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> なお<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>による実行は <code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proxy-rvsa</anchor></code>
により制限されることがあります。</comment-p></section><section><h1>RVSA/1.0</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RVSA/1.0</anchor></dfn> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2296</anchor> で規定されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 版番号は <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1.0</anchor></dfn> とされています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RVSA/1.0</anchor> は特定の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">透過的折衝可能資源</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>に対して実行され、
次の入力を持ちます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>の <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Alternates:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>で指定される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体リスト</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-ヘッダー群</anchor>で指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特徴</anchor> (の一部)</li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> ここで、 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Alternates:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>にフォールバックがあれば、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>が 0.000001 で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体属性</anchor>なしの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体説明</anchor>とみなします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RVSA/1.0</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>を決定するか、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト応答</anchor>を返すかを出力します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>が決まる場合には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択応答</anchor>を返すことができますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">透過内容折衝</anchor>では常に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト応答</anchor>を返すことが認められているので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RVSA/1.0</anchor> を部分的に実装して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト応答</anchor>を返すこともできます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体リスト</anchor>の各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体</anchor>について、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>を計算します。
これは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体説明</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>と、
各 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-ヘッダー群</anchor>から相当する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体属性</anchor>の値に対する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>を求めたものをすべて掛け合わせて、
得られた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">浮動小数点数</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小数点</anchor>以下5桁までに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">丸め</anchor>たものです。<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-ヘッダー群</anchor>で相当するものが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>になければ、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>は1とします。</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-ヘッダー群</anchor>で相当するものがあっても値で一致するものがなければ、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>は0とします。</li><li>相当する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体属性</anchor>がなければ、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>は1とします。</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> ここで <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-ヘッダー群</anchor>で欠落しているものがあったか、
<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">*</anchor></code> と一致したことによって値が決定されたなら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>は不確定的とし、そうでなければ確定的とします。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>が最高で最初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>とします。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">品質値</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正</anchor>で、確定的であり、
かつ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">隣接異体</anchor>なら、この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最善の異体</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択応答</anchor>を返します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> それ以外なら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト応答</anchor>を返します。</li></ol></figure></section><section><h1>Apache の RVSA</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Apache</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RVSA</anchor>の実装では、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> と次のような違いがあります <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal></src>。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-Encoding</anchor></code> (<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Encoding</anchor></code>) も選択の対象に含まれています。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 選択する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体</anchor>が決定するまで、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">丸め</anchor>ません。</li></ul></figure></p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite>コンテントネゴシエーション - Apache HTTP サーバ</cite> 
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://httpd.apache.org/docs/2.0/ja/content-negotiation.html#extensions">http://httpd.apache.org/docs/2.0/ja/content-negotiation.html#extensions</anchor-external></li></ul></refs></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">遠隔異体選択アルゴリズム</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">透過内容折衝</anchor>に対応した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>で使われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>は、未知の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体属性</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">異体リスト</anchor>に含まれていれば、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">遠隔異体選択アルゴリズム</anchor>を実行しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src>。</p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">遠隔異体選択アルゴリズム</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源鯖</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>で実行されるのに対し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">局所異体選択アルゴリズム</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>で実行されます。</p></section><section><h1>歴史</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC2295</anchor> 2.2 抜粋</figcaption><blockquote><dl><dt>remote variant selection algorithm</dt><dd>
A standardized algorithm by which a server can sometimes choose a
best variant on behalf of a negotiating user agent.  The algorithm
typically computes whether the Accept- headers in the request
contain sufficient information to allow a choice, and if so, which
variant is the best variant.  The use of a remote algorithm can
speed up the negotiation process.</dd></dl></blockquote><dl><dt>遠隔変種選択算法</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>が折衝している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>に代わって最善の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変種</anchor>を選ぶことが時々できる標準化された算法。
この算法は典型的には要求中の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Accept-頭群</anchor>が選択を行うのに十分な情報を含んでいるか、そうであればどれが最善の変種であるかを計算します。
遠隔算法の使用によって折衝過程が高速化できます。</dd></dl></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2295</anchor> (HTTP 透過折衝) 7  Remote variant selection algorithms</figcaption><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> </p><blockquote><p>A remote variant selection algorithm is a standardized algorithm by
which a server can choose a best variant on behalf of a negotiating
user agent.  The use of a remote algorithm can speed up the
negotiation process by eliminating a request-response round trip.</p></blockquote><blockquote><p>A remote algorithm typically computes whether the Accept- headers in
the request contain sufficient information to allow a choice, and if
so, which variant is the best variant.  This specification does not
define any remote algorithms, but does define a mechanism to
negotiate on the use of such algorithms.</p></blockquote><section><h1>7.1 Version numbers</h1><blockquote><p>A version numbering scheme is used to distinguish between different
remote variant selection algorithms.</p></blockquote><p>版番号付け方式は異なる遠隔変種選択算法同士を区別するのに使います。</p><blockquote><ul><li>rvsa-version = major &quot;.&quot; minor</li><li>major = 1*4DIGIT</li><li>minor = 1*4DIGIT</li></ul></blockquote><blockquote><p>An algorithm with the version number X.Y, with Y&gt;0, MUST be downwards
compatible with all algorithms from X.0 up to X.Y.  Downwards
compatibility means that, if supplied with the same information, the
newer algorithm MUST make the same choice, or a better choice, as the
old algorithm.  There are no compatibility requirements between
algorithms with different major version numbers.</p></blockquote><p>版番号 <samp class="conneg"><var>X</var>.<var>y</var></samp> (<code class="math"><var>Y</var> &gt; 0</code>)
の算法は <samp class="conneg"><var>X</var>.0</samp> から <samp class="conneg"><var>X</var>.<var>Y</var></samp>
までのすべての算法と互換でなければ<strong>なりません</strong>。
下方互換性とは、同じ情報が供給された場合、新しい方の算法は古い算法と同じ選択かより良い選択を行わなければ<strong>ならない</strong>ことを意味します。
異なる大版番号の算法間での互換性はありません。</p></section></figure></section><section><h1>メモ</h1></section></body></html>