문제

그것은 일반적인 원하는 브라우저 리소스를 캐시 자바스크립트,CSS,이미지,등등.가 있을 때까지 새로운 버전을 사용할 수 있고 다음을 지키는 브라우저를 가져와 캐시 새로운 버전을 대신 합니다.

하나의 솔루션을 포함하는 버전 번호에 자원의 이름,하지만 배치 리소스 관리 이 방법으로 디렉토리에 수정 번호에서 이렇게 같은 것은?전체 URL 을 파일로 사용되는 핵심 브라우저에서 캐시 또는 그 이름 자체가 그 어떤 meta-data?

는 경우 나의 코드의 변화에서 가져오기 /r20/example.js 하기 /r21/example.js,확신할 수 있습니 revision20 example.js 캐시되었지만,지정 21 되었 가 대신 그것은 지금 캐시?

도움이 되었습니까?

해결책

Yes,에 어떤 변화 어떤 부분 URL(excluding HTTP 와 HTTPS 프로토콜 변경)으로 해석되는 다양한 리소스 브라우저에서(그리고 어떤 프록시 중개)및 따라서 결과에서 별도로 엔티티에 브라우저 캐시입니다.

업데이트:

이 ThinkVitamin 문서 는 오페라,사파리/웹킷 브라우저하지 않는 캐시 Url?query=문자열 false.

를 추가하는 버전 번호를 매개 변수는 URL 은 완벽하게 허용하지 캐시 파열.

무엇을 할 수 있습 혼동의 저자 ThinkVitamin 문서는 사실을 입력 타격에서 주소/위치 바에서는 사파리 오페라에서 결과는 다른 동작을 위한 Url 을 가진 쿼리 문자열이다.

그러나,(그리고 이것은 중요한 부분입니다!)오페라,사파리 동일한 방식으로 작동하는 IE,Firefox 올 때를 캐싱 포함된 이미지와 스타일 시트와 스크립트는 웹 페이지에서-이 있는지 여부에 관계없이"?"문자에서 그들의 Url 이 있습니다.(이용하여 확인할 수 있습니다 간단한 시험에 정상적인 아파치 서버에 있습니다.)

(가에 댓글을 받아 현재에 응답하는 경우가 명성이 그것을 할 수 있습니다.:-)

다른 팁

브라우저 캐시 키 조합을 요청의 방식과 자원을 입력합니다.URI 의 구성 방식,기관,경로,질의,그리고 조각입니다.

관련 에서 발췌 HTTP1.1specification:

주요 캐시 키로 구성되어 있는 요청의 방법과 목표 URI.그러나,이후 HTTP 캐시에서 일반적으로 사용 오늘은 일반적으로 제한된 캐시 응답을 얻을 수 많은 캐시 단순히 감소하는 다른 방법 만 사용하는 URI 를 기본으로 캐시 키입니다.

관련 에서 발췌 URI 사양:

일반 URI 구문으로 구성됩 계층의 시퀀스 구성 요소라고 방식,기관,경로,질의,과 조각입니다.

URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

hier-part   = "//" authority path-abempty
              / path-absolute
              / path-rootless
              / path-empty

나 99.99999%는지 확인 그것은 전체 url 을 캐시하는 데 사용되는 리소스 브라우저에서,그래서 당신의 url scheme 운동해야 한다.

최소한의 확인해야 할 HTTP 체에 의해 전체 경로를 포함하여,query-string 매개 변수입니다.일부 브라우저하지 않을 수 있습 캐시 개체 쿼리와 함께 문자열 하지만 할 수 없을 주시기 바랍니다.

그것은 또한 기억하는 것이 중요하는 경로로는 더 이상 충분하지 않습니다.에 따라 다릅:헤더 HTTP 응답에 경고 브라우저(거나 프록시 서버,etc.) 의 것이 아닌 URL 을 사용해야를 결정하는 캐시 키 쿠키와 같은 값을 인코딩,etc.

귀하의 기본적인 질문에 그렇다,URL 을 변경하다.js 파일은 충분.큰 무엇인지에 대한 질문을 결정한 캐시 키를,그것은 URL 을 더한 다양:헤더 제한이 있습니다.

그렇습니다.다른 경로에서 동일한 캐시 관점입니다.

물론 그것은 전체를 사용하는 경로를'/r20/example.js'대'/r21/example.js'이 될 수 있는 완전히 다른 이미지로 시작합니다.당신이 제안하는 것이 가능한 방법을 처리 합니다.

대부분의 브라우저에서 전체 url 을 사용합니다.일부 브라우저가 있는 경우 쿼리에서 url 을 문서가 없을 것 캐시됩니다.

전체 url.을 보았다는 것을 이상한 행동에 몇 가지 오래된 브라우저는 경우 민감도 들어왔다.

외에도 기존 응답하고 싶다는 추가 그것에는 적용되지 않을 수도 있습니다 당신이 사용하는 경우 ServiceWorkers 또는 e.g-오프라인 플러그인입니다.그런 다음 경험할 수 있는 다른 캐시 규칙에 따라 어떻게 ServiceWorkers 설정할 수 있습니다.

따라 달라집니다.그것이 있어야의 전체 URL 을지만,일부 브라우저(오페라,사파리2 을 적용)다른 캐시 전략한 url 을 다른 params.

최선의 방법은 변경할 파일의 이름을.

거기에 아주 영리한 솔루션이 여기서(사용 PHP,아파치)

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/

전략 노트: "에 따라 문자 HTTP 캐시 명세,사용자 에이전트지 않 캐시 Url 을 가진 쿼리 문자열입니다.는 동안 인터넷 익스플로러와 파이어 폭스를 무시하이,오페라,사파리지 않을 확인한 모든 사용자 에이전트 캐시할 수 있습니다 당신의 자리를 유지해야 쿼리 문자열을 그들의 Url 이 있습니다."

http://www.thinkvitamin.com/features/webapps/serving-javascript-fast

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top