2011-08-22 2 views
0

YUI js framwork (v3.0)을 사용하는 응용 프로그램을 실행하고 있습니다. 사용자는 내 응용 프로그램에서 프레임 워크의 최신 버전 (3.4)으로 업그레이드 할 버튼을 클릭 할 수 있습니다. 문제는 ie8에서 이상한 javascript 오류가 발생한다는 것입니다. 디버깅 후 loader-min.js 파일의 이전 버전 (3.0)은 인스턴스화 될 때 여전히 YUI 객체에 의해 사용되므로 브라우저 캐시에서 검색되는 것으로 보입니다. 따라서 업그레이드하는 동안 스크립트 노드를 만들고 새 로더 파일 (3.4)에 위치를 추가 한 다음 헤드 섹션에 삽입하십시오. 우리 모두가이 기법을 잘 알고 있다고 생각해보십시오. 그러나 사용자가 다음 페이지로 이동할 때로드 된 파일은 손실되고 이전 버전 (3.0)은 여전히 ​​캐시에 남아 있습니다. 개발자 도구를 사용하고 앱이로드 한 모든 자바 스크립트 파일을보고이를 확인했습니다.ie8 YUI 프레임 워크의 자바 캐시 문제

새 버전 (3.4)을 얻으려고 여러 가지를 시도했습니다. 현재 자바 스크립트 문제를 해결할 캐시에있는 버전을 재정의하려고합니다. 나는 일반적으로 js 파일을 '버전 화'할 수있는로드되는 파일 이름의 끝에 고유 한 문자열을 추가하려고 시도했습니다. 내가로드하려고하는 새 버전의 Etag 및 Cache-Control 헤더가 설정되었는지 확인했습니다. 아무것도 작동하지 않으며 나는 벽에 머리를 세게 치고있다.

하나의 작은 제한 사항으로,이 새로운 버전의 loader-min 파일을로드하려면 javascript를 사용해야합니다. 업그레이드 프로세스의 작동 방식 때문에 HTML에 간단한 스크립트 태그를 추가 할 수 없습니다. 어떤 생각, 아이디어, 포인터로 IE8 동적으로로드 오전 버전 캐시하지 않습니다?

답변

0

이와 같은 캐싱 문제는 일반적으로 새 버전의 스크립트에 다른 파일 이름 (종종 버전 번호 포함)을 제공하고이를 포함하는 HTML을 변경하여 새로운 파일 이름을 참조하도록하여 문제를 해결할 수 있습니다. 이전 버전의 캐싱 시스템.

실제로이 버전 시스템은 모든 외부 스크립트 파일에서 사용되어야하므로 업그레이드 할 때 시청자가 새 버전을 즉시 받고 이전/새 버전의 스크립트가 실수로 혼합되지 않도록 할 수 있습니다. 캐싱 시스템.