2012-02-15 2 views
6

텍스트 사용! 플러그인, RequireJS 강제로 캐시 된 데이터를 반환하는 대신 파일을 다시로드 할 수있는 방법이 있습니까?강제로 RequireJS 텍스트! 다시로드하는 방법

+0

플러그인에 대한 링크를 제공해 주시겠습니까? 시도해 봤어? 어떻게 든 실패 했나요? –

+0

플러그인은 http://requirejs.org/docs/api.html#text – nicholas

+3

입니다. 아니요, 실패하지 않는 것은 실제로는 그대로 있어야합니다. 텍스트 파일을로드하면 해당 파일에 대한 모든 후속 요청에서 원래로드 된 데이터가 반환됩니다. 내가 찾고있는 건 그 파일이 변경되어서 새로 고쳐 져야하는 이상한 경우이다. – nicholas

답변

1

RequireJS는 요청 당 파일 만 캐시합니다. 페이지를 새로 고침하면 다시로드됩니다. 다른 것으로 보이는 경우 :

  • 서버에 캐싱 중 하나가 있습니다.
  • 또는 브라우저가 요청을 캐시합니다. 물론 이것을 브라우저에서 비활성화 할 수 있습니다.

브라우저가 매번 깨끗한 파일을 가져 오도록하려면 서버에서 이러한 리소스에 대해 no-cache 헤더가 있어야합니다. http://requirejs.org/docs/api.html#pageload

다음 : http://www.html5rocks.com/en/tutorials/appcache/beginner/

은 다음 적절한로드 이벤트를 얻기 위해 requirejs "domReady"를 사용할 수 있습니다

+1

서버에서 브라우저 로딩 파일을 강제 실행하기 위해 임의로 생성 된 쿼리 문자열 (예 : /Some-path-to-file/MyJSfile.js?v=TIMESTAMP)을 호출하려고 할 수 있습니다. – shershen

+0

@shershen Don ' require.js로 할 수 있다고 생각한다. – ggozad

+1

@ggozad requirejs.config ({urlArgs : 'getparam'})를 사용하여 requirejs로 만든 모든 모듈 요청에 GET 매개 변수를 추가 할 수있다. 이것은 브라우저 캐싱을 깰 수있다. –

0

나는 당신이 캐시 매니페스트를 제공함으로써 새로운 HTML5 캐시 기능을 추가 할 수 있다고 생각 적절한 이벤트 (첫 번째 링크에서 가져온 코드)를 듣고 : 당신이 urlArgs을 업데이트 할 때마다 새 JS 파일을 얻을 것이다

window.applicationCache.addEventListener('updateready', function(e) { 
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { 
    // Browser downloaded a new app cache. 
    if (confirm('A new version of this site is available. Load it?')) { 
    window.location.reload(); 
    } 
} else { 
    // Manifest didn't changed. Nothing new to server. 
}}, false); 

이 시점에서 매니페스트 캐시 F와 새로운 html 파일을 얻을 수 있습니다.

관련 문제