2012-01-19 5 views
10
내가 getScript 동적으로 내 플러그인을로드하는 데 사용

: 나는 파열 캐싱을 사용하지 않도록하려면 어떻게

$.getScript('js/code.photoswipe.jquery-3.0.4.min.js', function() { 
    //do magic 
}); 
  1. 를? 이 말에 번호를 생성하는 순간 :

    $.getScript = function (url, callback, cache) { 
        $.ajax({ 
         type: "GET", 
         url: url, 
         success: callback, 
         dataType: "script", 
         cache: cache 
        }); 
    }; 
    
    : JS/code.photoswipe.jquery-3.0.4.min.js _ =이 1,326,992,601,415 나는 내 경우에는 그것을 사용하는 방법을 잘 이것을보고 있지만,
  2. $ .getScript를 여러 번 호출하여 동일한 js 파일을 추가하면 매번 파일을 가져 오기 위해 요청합니까? 그렇다면 이미 스크립트를 가져 왔는지 확인하는 방법이 있습니까? 그래서 동일한 파일에 대해 getScript를 다시 호출하지 않아도됩니까?

+0

_ $ jget 파일을 여러 번 호출하면 요청을 수행합니까? 캐시를 사용하지 않으면 캐시 무효화로 인해 개별 요청이 전송됩니다. 캐싱을 사용하면 브라우저 캐시에서로드됩니다 (브라우저가 캐싱 헤더의 강도에 따라 최신 사본이 있는지 서버에서 확인합니다). –

답변

-3

브라우저 은 .. 따라 이미 URL을 캐시합니다 그래서 당신은 캐싱에 대해 걱정할 필요가 없습니다.

캐시를 체포하려는 그러나 단순히과 같이 URL에 임의의 문자열을 추가하는 경우 :

$.getScript('js/code.photoswipe.jquery-3.0.4.min.js?' + Math.random(), function() { 
     //do magic 
}); 

?' + Math.random() 캐싱 각 요청에 깨진 귀하의 js 파일에 추가하는 임의의 숫자를 허용합니다 파일에 대한

+8

아니요. 같은 페이지에서 $ .getScript onClick이라고 말하면 끝 부분에 다른 번호의 GET을 보냅니다. js/code.photoswipe.jquery-3.0.4.min.js? _ = 1326992601415 –

+0

내가 원하는 것은 끝에서이 숫자를 제거하고, 이미 스크립트를 가져온 경우에는 onclick으로 검사하여 가져올 수 있습니다. 그냥 getScript를 무시하십시오 –

+0

AJAX는 '가져 오기'스크립트의 개념을 사용하지 않습니다. 새로운 호출이있을 때마다 차이점은이 응답을 캐싱 할 수 있다는 것입니다 (예외). –

23

How to disable the cache busting (그것은 무작위로 번호를 생성로) : 보장합니다

$.ajaxSetup({ 
    cache: true 
}); 

는 사용자가 스크립트를 잡아 서버는 브라우저 설정이 캐싱을 방해하지 않는 한 그 이후에는 한 번만 로컬 캐시에서 가져옵니다.

+1

경고 : 이렇게하면 스크립트 호출뿐만 아니라 모든 Ajax 호출에 대해 캐싱이 활성화됩니다. –

4

짧은 대답은 유감스럽게도 할 수 없습니다. 당신이 어딘가에 당신의 JS이 포함 된 경우는 기존 코드를 중단하지 않습니다

$.getScript = function(url, callback, cache){ 
$.ajax({ 
     type: "GET", 
     url: url, 
     success: callback, 
     dataType: "script", 
     cache: true 
}); 
}; 

, 또한 페치 된 스크립트를 캐시합니다 :

getScript 그러나이 같은 오버라이드 (override) 할 수 있습니다.

장점
조각 이상 사용하면 페이지의 모든 스크립트에 대한 캐싱을 활성화 할 수 있습니다. 따라서 각 스크립트 가져 오기와 함께 다시 지정할 필요가 없습니다. 그에 true 매개 변수 :

$.ajax({ 
    url: url, 
    dataType: "script", 
    success: success 
}); 

http://api.jquery.com/jQuery.getScript/

이 방금 캐시를 추가 할 필요가 있음을 의미합니다 :

+0

필요 없음. jQuery 1.12.0 이상에서는 옵션 객체를'$ .getScript'에 전달할 수 있으므로 아무 것도 재정의하지 않고'.getScript ({cache : true, url : url})'할 수 있습니다. – oriadam

5

$ .getScript에 대한 jQuery를 워드 프로세서는 getScript은 속기가 있음을 말한다.

$.ajax({ 
    url: url, 
    cache : true, 
    dataType: "script", 
    success: success 
}); 

간단합니다. getScript 함수는 별다른 의미가 없으며 단지 축약 형입니다.

1

1. jQuery 1.12.0 이상은 옵션 객체 서명을 지원합니다.

$.getScript({ 
    url: "foo.js", 
    cache: true 
}) 

2. cache:true을 설정한다고 가정하면 (예 : devtools가 열리는 경우와 같이 브라우저 캐시가 비활성화되거나 만료되지 않는 한) 파일이 브라우저 캐시에서로드됩니다.

+0

jQuery 문서가 누락되면이 정보가 누락됩니다. 내가 그것을 업데이 트하는 풀 요청을 열었습니다. – oriadam