[javascript] 자바 스크립트에서 캐시 지우기

JavaScript로 브라우저 캐시를 지우려면 어떻게해야합니까?

최신 JavaScript 코드를 배포했지만 최신 JavaScript 코드를 얻을 수 없습니다.

편집자 주 :이 질문은 다음과 같은 장소에서 반복 제되었으며 다음 질문 중 첫 번째 질문에 대한 답이 가장 좋습니다. 이 대답은 더 이상 이상적인 솔루션이 아닙니다.

브라우저가 캐시 된 CSS / JS 파일을 강제로 다시로드하는 방법?

클라이언트가 JavaScript 파일을 새로 고치도록하려면 어떻게해야합니까?

로컬 자바 스크립트 소스 / Json 데이터를 동적으로 다시로드



답변

window.location.reload (true) 를 호출 하여 현재 페이지를 다시로드 할 수 있습니다 . 캐시 된 항목을 무시하고 서버에서 페이지, CSS, 이미지, JavaScript 등의 새 사본을 검색합니다. 전체 캐시를 지우지는 않지만 현재있는 페이지의 캐시를 지우는 효과가 있습니다.

그러나 최선의 전략은 다양한 다른 답변에서 언급 한 것처럼 경로 또는 파일 이름을 버전 화하는 것입니다. 또한 파일 이름 수정 :?v=n 버전 관리 체계 로 사용하지 않는 이유로 쿼리 문자열사용하지 마십시오를 참조하십시오 .


답변

자바 스크립트로 캐시를 지울 수 없습니다. 일반적인 방법은 다음과 같이 수정 번호 또는 마지막으로 업데이트 된 타임 스탬프를 파일에 추가하는 것입니다.

myscript.123.js

또는

myscript.js?updated=1234567890


답변

JavaScript 파일의 src를 변경해 보시겠습니까? 이것으로부터:

<script language="JavaScript" src="js/myscript.js"></script>

이에:

<script language="JavaScript" src="js/myscript.js?n=1"></script>

이 메소드는 브라우저가 JS 파일의 새 사본을로드하도록합니다.


답변

매시간 또는 매주 캐싱하는 것 외에 파일 데이터에 따라 캐싱 할 수 있습니다.

예 (PHP) :

<script src="js/my_script.js?v=<?=md5_file('js/my_script.js')?>"></script>

또는 파일 수정 시간을 사용하십시오.

<script src="js/my_script.js?v=<?=filemtime('js/my_script.js')?>"></script>


답변

PHP에서 다음과 같이 매시간마다 코드를 강제로 다시로드 할 수도 있습니다.

<?php
echo '<script language="JavaScript" src="js/myscript.js?token='.date('YmdH').'">';
?>

또는

<script type="text/javascript" src="js/myscript.js?v=<?php echo date('YmdHis'); ?>"></script>


답변

이것을 템플릿 끝에 넣으십시오.

var scripts =  document.getElementsByTagName('script');
var torefreshs = ['myscript.js', 'myscript2.js'] ; // list of js to be refresh
var key = 1; // change this key every time you want force a refresh
for(var i=0;i<scripts.length;i++){
   for(var j=0;j<torefreshs;j++){
      if(scripts[i].src && (scripts[i].src.indexOf(torefreshs[j]) > -1)){
        new_src = scripts[i].src.replace(torefreshs[j],torefreshs[j] + 'k=' + key );
        scripts[i].src = new_src; // change src in order to refresh js
      }
   }
}


답변

이것을 사용해보십시오

 <script language="JavaScript" src="js/myscript.js"></script>

이에:

 <script language="JavaScript" src="js/myscript.js?n=1"></script>