2016-12-24 1 views
0

나는 그물을 가로 질러 약간의 상반되는 대답을 보았고 나는 이것을 근본적인 수준에서 이해하려고 노력하고있다. 나는 내 사이트에 (허가, 예) hotlinked 이미지가 말 : 모든 관련 당사자 가정브라우저 캐싱은 핫 링크 된 이미지와 204 개의 응답을 어떻게 처리합니까?

<img src="externalserver.com/catpic.png"> 
  1. 은 브라우저 캐싱 활성화 이 이미지는 캐시됩니다 (일명 외부 사이트의 이미지도 캐시 할 수 있습니다) ? 외부 서버가 동일한 파일 위치에 다른 이미지를 제공하기로 결정하면
  2. , 캐시가 파손됩니다 htaccess로 다시 쓰기 말할? 외부 서버는 그 후 ?randomquerystring와 동일한 이미지를 제공하기로 결정하면
  3. , 캐시 깨진 것인가? 외부 서버는 HTTP 상태 코드 (204) 실제로 이미지를 제공하는 대신 로 응답하는 경우
  4. , 무슨 일이 캐싱됩니까?

고마워요! 너희 모두 즐거운 휴일.

답변

1

모두 다릅니다.

  1. 사용자 에이전트는 이미지를 캐시 할 수 있습니다. 이미지 캐시 여부는 서버가 Cache-Control 또는 Expires 헤더로 설정된 방법에 따라 다릅니다. 더 자세한 정보는 MDN에서 Cache-Control header page을보십시오.
  2. 사용자 에이전트는 새로운 리소스를 얻거나받지 못할 수 있습니다. Cache-Control 헤더, Expires 헤더, 리소스가 오래 되었는 지 여부, 서버가 유효성 검사기를 사용하는지 여부 및 약한 또는 강력한 유효성 검사 수행 여부에 따라 다릅니다. 더 자세한 정보는 MDN에서 HTTP conditional requests page을보십시오.
  3. 서버 ?randomquerystring와 자원을 제공하지 않습니다. 오히려 클라이언트는 ?randomquerystring으로 자원을 요청할 수 있습니다. ?randomquerystring은 캐시 버스터라고합니다. 사용자 에이전트는 새로운 요청을 수행하지만 일부 프록시는 해당 유형의 캐시 버스터를 무시하고 여전히 캐시 된 응답을 반환 할 수 있다고 들었습니다.
  4. 사용자 에이전트는 propably Cache-ControlExpires 헤더를 존중합니다. RFC 2616에서 관련 발췌 :

    는 응답이 다른 상태 코드와 함께 수신 (예를 들어, 상태 코드 302, 307) 캐시 제어 지시문이없는 한 후속 요청에 대한 응답으로 절대 리턴해서는 안 또는 다른 헤더 (명시 적으로 허용하는). 예를 들어 다음은 다음과 같습니다. Expires 헤더 (14.21 절). "최대 유효 기간", "s-maxage", "must-revalidate", "proxy-revalidate", "public"또는 "개인"캐시 제어 지시문 (14.9 절). 일리야 그리고 릭하여 일반 검사 HTTP Caching 문서의 HTTP 캐싱에 대한 자세한 내용은

.

관련 문제