2010-02-23 2 views
8

이전 버전의 JS 파일을 사용자 브라우저에 캐시하고 유효 기간을 10 년으로 설정했습니다. 이후로 내 웹 서버에서 헤더 만료 기간을 올바르게 설정하는 방법을 배웠습니다. JS 파일을 업데이트했으며 사용자에게 혜택을주기를 바랍니다.JavaScript 파일에서 캐시 만료 강제 설정

  • 이 하나 개의 파일에 대한 캐시를 지우려면 내 웹 서버가 사용자의 브라우저를 강제 할 수있는 방법은 다르게 JS라는 이름의 파일 봉사 짧은 있나요?
  • 미래에 헤더가 올바르게 설정되지 않으면 (편집증), 내 JS 파일이 자동으로 만료되어 캐시 된 후 하루가 경과 한 후 강제로 다시로드 할 수 있습니까?

편집 : 이상적으로는 스크립트를 호스팅하는 페이지의 HTML 마크 업을 변경없이이 문제 를 해결하고자합니다.

+0

좋은 질문 :) – Layke

답변

18

짧은 ... 아니요.

스크립트 태그의 소스 주소 끝에 뭔가를 추가 할 수 있습니다. 브라우저는이 파일을 현재 캐시 한 파일과 다른 파일로 취급합니다.

<script src="/js/something.js?version=2"></script> 

다른 옵션에 대해 확실하지 않습니다.

+0

이 접근법의 단점은 마크 업을 변경해야한다는 것입니다. 일부 다른 웹 사이트는 이미 내 스크립트를 배포했으며, 코드 변경을 요구할 필요가 없습니다. –

+2

브래시 (Brash) 콘텐츠 캐싱 결정을 내릴 위험성에 대한 고해상도 블로그 게시물을 작성하여 수익을 올리십시오. 내가 너에게 그걸 reddit하겠습니다. – Pointy

1

당신은 당신의 URL을

<script src='oldscriptname.js?foo=bar'></script> 

[전자에 더미 매개 변수를 추가 할 수 있습니다 : F; b]

주요 문제는 간단한 "Expires"헤더로 만료를 설정하면 캐시 된 파일이있는 브라우저가 사용자에게 연락하는 것을 귀찮게하지 않는다는 것입니다. 브라우저가 브라우저를 우회하여 캐시를 지울 수있는 방법이 있더라도 이전 스크립트 을 수행하지 않으므로 클라이언트에 해당 기능을 제공 할 방법이 없습니다.

5
HTML5에서

당신이 응용 프로그램 캐시, 캐시 당신은 당신의 demo.appcache 파일에서 매니페스트

<!DOCTYPE HTML><html manifest="demo.appcache">

의 경로를 추가 할 필요가

만료시기를 제어 할 수있는 방법을 사용할 수 있습니다 새 파일을 다운로드 브라우저를 할 때 당신은 당신이

CACHE MANIFEST 
# 2013-01-01 v1.0.0 
/myjsfile.js 

를 캐시 할 각 파일을 배치 할 수 있습니다 매니페스트

CACHE MANIFEST 
# 2013-02-01 v1.0.1 
/myjsfile.js 

를 업데이트 할 수 있습니다 그냥 게시 날짜 나 버전 (또는 뭔가 다른) 브라우저가 매니페스트가있는 모든 파일을 다운로드합니다 변경이 있음을보고 그 방법으로 매니페스트 캐시를 수정해야합니다.

매니페스트가 변경되지 않은 경우 해당 파일이 서버에서 수정 된 경우에도 브라우저는 로컬 파일을 업데이트하지 않습니다.

은 자세한 내용은 당신은 자바 스크립트와 함께 cacheated 문서를 다시로드 강제 할 수 HTML5 Application Cache

0

에서 봐 주시기 바랍니다 :

window.location.reload(true); 

진정한 명령은 브라우저가 캐시하지 않고 페이지를 다시로드해야 나타냅니다.

관련 문제