Expires와 Cache-Control 헤더의 차이점은 무엇입니까?


답변:


130

Cache-ControlHTTP / 1.1에 도입되었으며보다 많은 옵션을 제공합니다 Expires. 그것들은 같은 일을 수행하는 데 사용될 수 있지만에 대한 데이터 값 Expires은 HTTP 날짜이지만 Cache-Controlmax-age를 사용하면 "페이지 요청 후 X 시간"을 지정할 수있는 상대적 시간을 지정할 수 있습니다.

HTML 캐시 제어 는 매우 유사한 질문이며 대부분의 질문에 답변해야하는 캐싱 자습서 (예 : http://www.mnot.net/cache_docs/#EXPIRES )에 대한 링크가 있습니다. 요약하자면 Expires이미지와 같은 정적 리소스 및 Cache-Control캐싱 수행 방법에 대한 추가 제어가 필요한 경우에 권장 됩니다.


8
캐시 제어가 모든 브라우저에서 사용하는 것이라고 언급 할 가치가 있지만, 오래된 프록시가있는 경우에 대비하여 두 헤더를 모두 지정하는 것이 유용합니다.
Nacho Coloma

3
캐싱 헤더의 올바른 사용법을 확인 하려면 서비스 redbot.org (또한 위의 답변에서 참조 된 캐싱 기사를 작성한 Mark Nottingham )도 사용하십시오.
daxim

35
또한 "캐시 제어 및 만료가 모두 존재할 경우, 캐시 제어가 우선합니다." - mnot.net/cache_docs/
KFunk

35

CDN (Cloud Delivery Network)을 사용하는 경우 최대 시간 (초)으로 Cache-Control을 사용하는 것이 좋습니다. 예를 들어 Cache-Control : max-age = 604800입니다. 이렇게하면 오리진 서버에 대한 요청 피크를 방지 할 수 있습니다. "Expires Wed, 20 Oct 20xx 04:37:07 GMT"를 사용하면 모든 브라우저에서 동시에 요청합니다.


22
Apache (및 아마도 많은 서버)는 일반적으로 파일이 요청 된 시간 + 지정한 시간 초과를 사용하여 만료 날짜를 설정합니다. 이 날짜가 초를 사용하므로 시나리오가 거의 불가능하고 동작은과 동일합니다 cache-control. 그래서 나는 왜 사용할 때 요청 피크가 Expires:
있을지 모르겠다

19

이 Google Developers 기사에 따르면 HTTP 캐싱 :

Cache-Control 헤더는 HTTP / 1.1 사양의 일부로 정의되었으며 응답 캐싱 정책을 정의하는 데 사용 된 이전 헤더 (예 : 만료)를 대체합니다. 모든 최신 브라우저는 Cache-Control을 지원하므로 필요한 것입니다.


모든 최신 브라우저가이를 지원할뿐만 아니라 스펙에 설명 된대로 : "응답에 Expires 헤더와 max-age 지시문이 모두 포함 된 경우, Expires라도 max-age 지시문이 Expires 헤더를 대체합니다. 헤더가 더 제한적입니다. "[ w3.org/Protocols/rfc2616/rfc2616-sec14.html]
rosell.dk

8

Cache-Control은 HTTP / 1.1에 정의되어 있으며 서버에서 클라이언트로 모든 캐싱 메커니즘에이 객체를 캐시 할 수 있는지 알려줍니다. 초 단위로 측정됩니다 : Cache-Control: max-age=3600.

Expires헤더 필드는 응답이 부실 간주되는 날짜 / 시간을 제공합니다. 만료 값은 HTTP- 날짜 타임 스탬프 Expires: Tue, 18 Jul 2017 16:07:23 GMT입니다.

응답 Cache-Controlmax-age지시문이 있는 필드가 포함 된 경우 수신자는 해당 Expires필드를 무시해야 합니다.


4

Heroku devcenter는 이 주제에 대한 훌륭한 기사 를 가지고 있습니다.

인용하면

Cache-Control 헤더는 클라이언트 측 캐싱을 켜고 리소스의 최대 수명을 설정하지만 Expires 헤더는 리소스가 더 이상 유효하지 않은 특정 시점을 지정하는 데 사용됩니다.


0

CC의 개인 / 공개 옵션을 제외하고는 차이가 없습니다. "액세스 + 1 년 / 월 / 주 / 일"과 같은 만료를 사용하는 경우 CC와 동일한 방식으로 작동합니다.


downvote를 설명해 주시겠습니까? Chrome, Safari 및 Firefox에서 광범위한 테스트를 수행했습니다. 캐시 제어에는 만기를 사용할 때 사용할 수없는 몇 가지 옵션이 있지만 모든 실제 목적을 위해 둘 다 정확히 동일한 방식으로 작동합니다.
Rob

-1

그래도 관심이 있으시면이 추천을 Google 소년에게 직접 남겨주세요. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 캐시 제어보다 만료를 선호합니다


캐시 제어보다 만료를 선호합니까? 적어도 Firefox의 경우 재정의가 다른 방법이라고 읽었습니다. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
Ecker00

현재이 페이지에는 "더 이상 사용되지 않습니다.이 페이지는 더 이상 사용되지 않으며 2019 년 5 월에 종료 될 PageSpeed ​​Insights API 버전 4 용으로 작성되었습니다. 버전 5는 최신 버전이며 Chrome 사용자 환경의 실제 데이터를 모두 제공합니다. Lighthouse의 보고서 및 실험실 데이터. "
Jochem Schulenklopper
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.