JavaScript로 브라우저 캐시를 지우려면 어떻게해야합니까?
최신 JavaScript 코드를 배포했지만 최신 JavaScript 코드를 얻을 수 없습니다.
편집자 주 :이 질문은 다음과 같은 장소에서 반복 제되었으며 다음 질문 중 첫 번째 질문에 대한 답이 가장 좋습니다. 이 대답은 더 이상 이상적인 솔루션이 아닙니다.
브라우저가 캐시 된 CSS / JS 파일을 강제로 다시로드하는 방법?
답변
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>
