2010-01-30 2 views
3

저는 장고에서 프로젝트를하고 djangos-css (http://github.com/dziegler/django-css)와 Sass (http://sass-lang.com/)를 사용하고 있습니다. Sass 파일은 django-css를 사용하여 개발 중에 제공됩니다. 나는 1 초마다 CSS 자산을 검색 할 JavaScript 루틴을 작성하려고합니다. 이것의 목적은 디자이너가 Sass 파일을 편집하고, 저장을 누르고, 응용 프로그램을 전환하고 새로 고침하지 않고 즉시 브라우저에서 결과를 볼 수 있도록하기위한 것입니다.JavaScript를 사용하여 브라우저의 캐시를 무효화하십시오.

기본적으로 페이지 새로 고침을 수행하지 않고 브라우저가 특정 파일을 다시 다운로드하도록 JavaScript에 대한 방법이 필요합니다. 이것이 가능한가?

답변

1

가장 간단한 방법은 URL에 고유 한 매개 변수를 추가하는 것이, 나는 종종 당신의 요청이 이미 다음 매개 변수가 대신 &time=' + timstamp를 추가해야 할 경우 그냥 조심 타임 스탬프를

var timestamp = (new Date()).getTime(); 
url += '?time=' + timestamp; 

를 사용합니다.

각 요청이 고유 해 보이기 때문에 브라우저는 요청을 캐시 할 수 없습니다.

+0

기술이 작동합니다. setInterval에 대한 호출 안에 넣습니다. 지금 당면하는 문제는 브라우저가 새로운 CSS 파일을 사용하여 다시 그릴 때마다 깜박입니다. 이 빠른 점멸은 매우 성가신 일입니다. 아마 그걸 막을 길이 없다고 생각합니다. CSSEdit (http://macrabbit.com/cssedit/)라는 앱이있어 깜박이지 않고 Webkit보기에서 실시간 미리보기로 CSS를 편집 할 수 있습니다. 불행히도이 앱은 Sass 또는 이와 유사한 언어를 지원하지 않습니다. 어쩌면 대답은 맞춤형 최소 브라우저를 작성하는 것입니까? – hekevintran

+1

JavaScript를 사용하는 것보다이 문제를 더 잘 해결하는 XRefresh (http://xrefresh.binaryage.com/)를 찾았습니다. – hekevintran

2

모든 캐시가 쿼리 문자열로 콘텐츠를 캐시하지는 않습니다.

Steve Souders은 "캐시 가능 자원에 대한 쿼리 문자열 사용 방지"를 권장합니다. 그는이 경우 5 ~ 20 %의 요청이 캐시되지 않는다는 것을 알게되었습니다. 특히 쿼리 문자열은 캐시 무효화를 위해 일부 CDN에서 전혀 작동하지 않습니다.

더 좋은 방법은 각 출시에 대한 자바 스크립트 파일 이름으로 MD5를 생성하는 것입니다.

{path to script file}/filename-{md5 hash}.js

관련 문제