Cacheable

캐시 가능(cacheable) 한 응답은 캐시할 수 있는 HTTP 응답으로, 나중에 검색하고 사용하기 위해 저장하여 새 요청을 서버에 저장합니다. 모든 HTTP 응답을 캐시할 수 있는 것은 아니며, 캐시할 HTTP 응답에 대한 제약 조건은 다음과 같습니다.

  • GET 또는 HEAD 메서드는 요청에 사용된 메서드는 그 자체로 캐시 가능합니다. POST 또는 PATCH 요청에 대한 응답은 유효성이 표시되고 Content-Location 헤더가 설정된 경우 캐시될 수도 있지만 거의 구현되지 않았습니다. (예를 들어, Firefox는 https://bugzilla.mozilla.org/show_bug.cgi?id=109553 에 따라 이를 지원하지 않습니다.) PUT 혹은 DELETE 다른 메서드는 캐시 가능하지 않고 그 결과 역시 캐시할 수 없습니다.
  • 애플리케이션 캐싱에 의해 알려진 응답의 상태 코드는 캐시 가능한 것으로 간주됩니다. 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501 상태 코드는 캐시 가능합니다.
  • 응답에는 Cache-Control과 같은 캐싱을 방지하는 특정 헤더가 있습니다.

특정 URI에 대한 일부 캐시할 수 없는 요청/응답은 동일한 URI에서 이전에 캐시된 응답을 무효화할 수 있습니다. 예를 들어 pageX.html에 대한 PUT 요청은 동일한 URI에 대한 GET 혹은 HEAD 요청의 캐시를 무효화합니다.

요청 메서드와 응답 상태가 모두 캐시 가능한 경우 요청에 대한 응답을 캐시할 수 있습니다.

http
GET /pageX.html HTTP/1.1
(…)

200 OK
(…)

PUT 요청을 캐시할 수 없습니다. 같은 URI에 대한 HEAD 혹은 GET를 통한 요청은 캐시된 데이터를 무효화합니다.

http
PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)

응답의 Cache-Control 헤더는 캐싱을 방지합니다.

http
GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)

같이 보기

  • 메서드와 캐싱에 대한 자세한 내용은 HTTP 명세서에서 제공합니다.
  • 일반적으로 캐시 가능한 메서드에 대한 설명: GET, HEAD
  • 일반적으로 캐시 불가능한 메서드에 대한 설명: PUT, DELETE, 가끔 POST