2013-03-13 2 views
3

1. Определение «семантически прозрачным» от "1.3 сек" Терминология из RFC2616Как понять «семантически прозрачный» RFC2616 в разделе «Cache-Control machanism»?

семантически прозрачный

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.I не может понять предложение RFC2616 "Механизмы 13.1.3 Cache-Control"

Заголовок Cache-Control позволяет клиенту или серверу передавать различные директивы в запросах или ответах. Эти директивы обычно переопределяют алгоритмы кэширования по умолчанию. Как правило , если есть какой-либо видимый конфликт между заголовками значений, применяется самая ограничительная интерпретация (то есть , которая, скорее всего, сохранит семантическую прозрачность).

Я сбиваю с толку эти значения конфликта в заголовке «Cache-Control».

тест 3.I некоторые примеры через веб-сервер Apache

3,1 Web Toponology

Telnet (клиент) < -> HTTP прокси (апач работы в режиме прокси, S1) < -> Веб-сервер (Apache , S2)

3.1.1 S1 configurarion (работа в качестве кэширования прокси-сервера):

<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 (работа в качестве реального веб-сервера):

<filesMatch "\.(html|png)"> 
    Header set Cache-Control "max-age=5, max-age=15" 
</filesMatch> 

3,2 Тестовых случаи

3.2.1 Два "максимальный возраст" значение

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> 

Значение "Макс-возраст = 5" применяется. Здесь я думаю, что применяется «max-age = 35», так как это значение может хранить контент дольше в кеше и сервере для последующих запросов на повышение производительности из концепции «семантическая прозрачность».

3.2.2 макс возраста = 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> 

Значение максимального возраста = 35 применяется. Здесь я думаю, что значение «must-revalidate» будет применено.

3.2.3 макс возраста = 35 и не-магазин

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> 

Значение "нет-магазин" применяется.

3.2.4 макс возраста = 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> 

Значение "нет кэша" применяется.

Ссылка: RFC2616 http://tools.ietf.org/html/rfc2616

+0

Можете ли вы уточнить, каков ваш точный вопрос? –

+0

Как понять «семантическую прозрачность» в «Маханизм управления кешем», например, если в заголовке «Cache-Control» конфликтуют несколько значений, какие значения должны рассматриваться как «семантическая прозрачность»? – inix

+0

Я рекомендую прочитать http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p6-cache-22.html и предоставить обратную связь, если он еще недостаточно ясен. –

ответ

0

Я интерпретировал бы примеры вы дали следующий образ:

  • max-age=5, max-age=15: max-age=5 выигрывает, так как это более короткое время кэша, который является более ограничительным
  • max-age=5, max-age=35, must-revalidate : must-revalidate выигрывает, так как он требует от клиента всегда повторной проверки запроса. И Section 14.9.4 говорит:

    The must-revalidate directive is necessary to support reliable 
    operation for certain protocol features. In all circumstances an 
    HTTP/1.1 cache MUST obey the must-revalidate directive; 
    
  • max-age=35, no-store: no-store побед, так как это в основном означает не кэширование не должно быть выполнено, что, безусловно, является наиболее щадящим.

  • max-age=35, no-cache: no-cache выигрывает, так как он похож на no-store и не определяет, какие имена полей, а это означает, что кэш не должен повторно использовать ответ для последующего запроса, который является более жестким из них.

+0

Спасибо. Я снова проверил эти запросы на веб-сервер Apache. – inix