Wikipedia의 Pragma 헤더에 대해 읽었습니다 .
“Pragma : no-cache 헤더 필드는 요청에 사용하기위한 HTTP / 1.0 헤더입니다. 이는 브라우저가 서버가 아닌 새로운 버전의 리소스를 원한다고 서버와 모든 중간 캐시에 알리는 수단입니다. 일부 사용자 에이전트는 응답으로이 헤더에주의를 기울이지 만 HTTP / 1.1 RFC는 특히이 동작에 의존하지 않도록 경고합니다. “
그러나 나는 그것이 무엇을 이해하지 못했습니까? 사이의 차이는 무엇입니까 Cache-Control
값 헤더 no-cache
와 Pragma
그 값도는 no-cache
?
답변
Pragma
HTTP / 1.0 구현이며 cache-control
동일한 개념의 HTTP / 1.1 구현입니다. 둘 다 클라이언트가 응답을 캐싱하지 못하도록하기위한 것입니다. 이전 클라이언트는 HTTP / 1.1을 지원하지 않을 수 있으므로 해당 헤더가 여전히 사용되고 있습니다.
답변
Pragma
클라이언트의 요청에만 적용 가능한 것으로 정의 된 것을 제외하고 는 차이가 없지만 클라이언트 Cache-Control
의 요청과 서버의 응답 모두에서 사용될 수 있습니다.
따라서 표준에 관한 한, 요청을하는 클라이언트와 서버가 클라이언트로부터 요청을받는 관점에서만 비교할 수 있습니다. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 정의하는 시나리오는 다음과 같습니다 :
HTTP / 1.1 캐시는 클라이언트가 “Cache-Control : no-cache”를 보낸 것처럼 “Pragma : no-cache”를 처리해야합니다. 새로운 Pragma 지시문은 HTTP에 정의되지 않습니다.
Note: because the meaning of "Pragma: no-cache as a response header field is not actually specified, it does not provide a reliable replacement for "Cache-Control: no-cache" in a response
위의 내용을 읽는 방법 :
-
클라이언트를 작성 중이고 필요한 경우
no-cache
:- 서버가 지원
Pragma: no-cache
하는지 알 수 없으므로 요청에 사용 하십시오Cache-Control
. - 그러나 답장에서 캐시할지 여부를 결정하려면
Cache-Control
- 서버가 지원
-
서버를 작성하는 경우 :
- 클라이언트의 요청을 구문 분석 할 때 확인하십시오
Cache-Control
. 찾을 수 없으면를 확인Pragma: no-cache
하고Cache-Control: no-cache
논리를 실행하십시오 . - 답글을 보내
Cache-Control
주십시오.
- 클라이언트의 요청을 구문 분석 할 때 확인하십시오
물론 현실은 RFC에서 작성되거나 암시 된 것과 다를 수 있습니다!
답변
| Stop using | Replaced with |
| (HTTP 1.0) | (HTTP 1.1 - 1999) |
|---------------------|----------------------------------|
| Expires: [date] | Cache-Control: max-age=[seconds] |
| Pragma: no-cache | Cache-Control: no-cache |
1999 년 이후에도 여전히 Expires 또는 Pragma를 사용 하고 있다면 잘못하고 있습니다.
나는 당신을보고 있습니다.
200 OK Pragma: no-cache Content-Type: application/json X-Frame-Options: SAMEORIGIN X-Request-Guid: a3433194-4a03-4206-91ea-6a40f9bfd824 Strict-Transport-Security: max-age=15552000 Content-Length: 54 Accept-Ranges: bytes Date: Tue, 03 Apr 2018 19:03:12 GMT Via: 1.1 varnish Connection: keep-alive X-Served-By: cache-yyz8333-YYZ X-Cache: MISS X-Cache-Hits: 0 X-Timer: S1522782193.766958,VS0,VE30 Vary: Fastly-SSL X-DNS-Prefetch-Control: off Cache-Control: private
tl; dr : Pragma
은 HTTP / 1.0의 레거시이며 Internet Explorer 5 또는 Netscape 4.7 이후에는 필요하지 않았습니다. 일부 사용자가 IE5를 사용할 것으로 예상하지 않는 한 사용을 중지하는 것이 안전합니다.
- 만료 :
[date]
(더 이상 사용되지 않음-HTTP 1.0) - Pragma : 캐시 없음 (더 이상 사용되지 않음-HTTP 1.0)
- 캐시 제어 : max-age =
[seconds]
- 캐시 제어 : 캐시 없음 (매번 캐시 된 사본을 다시 확인해야 함)
그리고 조건부 요청 :
- Etag (엔티티 태그) 기반 조건부 요청
- 섬기는 사람:
Etag: W/“1d2e7–1648e509289”
- 고객:
If-None-Match: W/“1d2e7–1648e509289”
- 섬기는 사람:
304 Not Modified
- 섬기는 사람:
- 수정 된 날짜 기반 조건부 요청
- 섬기는 사람:
last-modified: Thu, 09 May 2019 19:15:47 GMT
- 고객:
If-Modified-Since: Fri, 13 Jul 2018 10:49:23 GMT
- 섬기는 사람:
304 Not Modified
- 섬기는 사람:
최종 수정 : 2019 년 5 월 09 일 목요일 19:15:47 GMT