1.RFC2616のセクション「1.3用語」からの「意味的に透過的な」の定義
意味的に透過的
A cache behaves in a "semantically transparent" manner, with
respect to a particular response, when its use affects neither the
requesting client nor the origin server, except to improve
performance. When a cache is semantically transparent, the client
receives exactly the same response (except for hop-by-hop headers)
that it would have received had its request been handled directly
by the origin server.
2.RFC2616「13.1.3キャッシュ制御メカニズム」の文が理解できない
Cache-Controlヘッダーを使用すると、クライアントまたはサーバーは、要求または応答のいずれかでさまざまなディレクティブを送信できます。これらのディレクティブは通常、デフォルトのキャッシュアルゴリズムをオーバーライドします。原則として、ヘッダー値の間に明らかな矛盾がある場合は、最も制限的な解釈が適用されます(つまり、セマンティックの透明性を維持する可能性が最も高い解釈)。
「Cache-Control」ヘッダーのこれらの競合値を混乱させています。
3.ApacheWebサーバーを介していくつかの例をテストします
3.1Webトポロジ
Telnet(クライアント)<-> HTTPプロキシ(Apacheはプロキシモードで動作します、S1)<-> Webサーバー(Apache、S2)
3.1.1 S1構成(キャッシングプロキシとして機能):
<Location />
ProxyPass http://10.8.1.24:80/
</Location>
<IfModule mod_cache.c>
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
CacheDefaultExpire 86400
</IfModule>
3.1.2 S2構成(実際のWebサーバーとして機能):
<filesMatch "\.(html|png)">
Header set Cache-Control "max-age=5, max-age=15"
</filesMatch>
3.2テストケース
3.2.12つの「最大年齢」値
GET /index.html HTTP/1.1
Host: haha
User-Agent: telnet
HTTP/1.1 200 OK
Date: Wed, 13 Mar 2013 03:40:25 GMT
Server: Apache/2.2.23 (Win32)
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "63e62-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Cache-Control: max-age=5, max-age=35, must-revalidate
Age: 3
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
値「max-age=5」が適用されます。ここでは、「max-age = 35」が適用されていると思います。この値は、「セマンティック透過性」の概念からパフォーマンスを向上させるための後続の要求に対して、コンテンツをキャッシュとサーバーに長く保存できるためです。
3.2.2 max-age=35および再検証する必要があります
GET /index.html HTTP/1.1
Host: haha
User-Agent: telnet
HTTP/1.1 200 OK
Date: Wed, 13 Mar 2013 03:41:24 GMT
Server: Apache/2.2.23 (Win32)
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "63e62-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Cache-Control: max-age=35, must-revalidate
Age: 10
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
値max-age=35が適用されます。ここでは、「再検証する必要がある」という値を適用する必要があると思います。
3.2.3 max-age=35およびno-store
GET /index.html HTTP/1.1
Host: haha
User-Agent: telnet
HTTP/1.1 200 OK
Date: Wed, 13 Mar 2013 03:45:04 GMT
Server: Apache/2.2.24 (Unix)
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "63e62-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Cache-Control: max-age=35, no-store
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
値「no-store」が適用されます。
3.2.4 max-age=36およびキャッシュなし
GET /index.html HTTP/1.1
Host: haha
User-Agent: telnet
HTTP/1.1 200 OK
Date: Wed, 13 Mar 2013 06:22:14 GMT
Server: Apache/2.2.24 (Unix)
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "63e62-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Cache-Control: max-age=35, no-cache
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
値「no-cache」が適用されます。
参照:RFC2616 https://www.rfc-editor.org/rfc/rfc2616