caching의 목표

  1. request를 보낼 필요를 없애는 것 (reducing the number of network round-trips) 이를 위해 "expiration" mechanism 을 사용합니다.
  2. full responses를 보낼 필요를 없애는 것(reducing network bandwidth대역폭) 이를 위해 "validation" mechanism 을 사용합니다.

성능, 가용성 및 연결 해제된 작업에 대한 요구 사항은 의미론적 투명성이라는 목표를 완화할 수 있도록 요구합니다. HTTP/1.1 프로토콜을 사용하면 원본 서버, 캐시 및 클라이언트가 필요할 때 투명도를 명시적으로 줄일 수 있습니다. 그러나 불투명한 작업(?)은 비전문가 사용자를 혼란스럽게 할 수 있고 특정 서버 응용 프로그램(예: 상품 주문용)과 호환되지 않을 수 있으므로 프로토콜은 다음 상황에만 투명성을 완화해야 합니다.

HTTP가 제공하는 기능

  1. full semantic transparency
  2. origin server or user agent가 불투명한(non-transparent) operation을 명시적으로 request 및 control 할 수 있는 기능
  3. cache가 투명성의 근사치를 유지하지 않는 응답에 대해 warning을 첨부할 수 있는 기능.

<aside> 💡 A basic principle is that it must be possible for the clients to detect any potential relaxation of semantic transparency. 클라이언트가 투명성의 잠재적인 완화를 감지할 수 있어야 합니다.

</aside>

<aside> 💡 서버와 클라이언트, 캐쉬는 명시되지 않은 상황을 직면할 수 있다. 그럴 경우 신중하고 완전한 분석이 투명성을 깨는 것에 대한 상당한 이점을 증명하지 못 한다면, implementor ought to err

</aside>

13.1장

13.2장 Expiration Model

13.3장 Validation Model