[JQUERY] 캐시되는 정지 jQuery를 .load 응답
JQUERY캐시되는 정지 jQuery를 .load 응답
해결법
-
1.당신은 당신이 당 요청으로 제어 캐싱하려면 $ 아약스 ()와 같은 더 복잡한 기능을 사용해야합니다. 그냥 모든 것을을 해제하려는 경우 또는, 스크립트의 상단에 이것을 넣어 :
당신은 당신이 당 요청으로 제어 캐싱하려면 $ 아약스 ()와 같은 더 복잡한 기능을 사용해야합니다. 그냥 모든 것을을 해제하려는 경우 또는, 스크립트의 상단에 이것을 넣어 :
$.ajaxSetup ({ // Disable caching of AJAX responses cache: false });
-
2.여기서 요구 당 캐싱을 제어하는 방법의 예는
여기서 요구 당 캐싱을 제어하는 방법의 예는
$.ajax({ url: "/YourController", cache: false, dataType: "html", success: function(data) { $("#content").html(data); } });
-
3.한 가지 방법은 URL의 끝에 고유 번호를 추가하는 것입니다 :
한 가지 방법은 URL의 끝에 고유 번호를 추가하는 것입니다 :
$('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val()+'&uid='+uniqueId());
당신이 UNIQUEID 쓰기 경우 ()가 호출 될 때마다 뭔가 다른 돌아갑니다.
-
4.또 다른 방법은 서버에서 데이터를 얻을하는 데 필요한 경우에만 라인 아래를 넣어 추가하려면 귀하의 아약스의 URL과 함께 아래 라인.
또 다른 방법은 서버에서 데이터를 얻을하는 데 필요한 경우에만 라인 아래를 넣어 추가하려면 귀하의 아약스의 URL과 함께 아래 라인.
'? _ ='+ Math.round (인 Math.random () * 10000)
-
5.
/** * Use this function as jQuery "load" to disable request caching in IE * Example: $('selector').loadWithoutCache('url', function(){ //success function callback... }); **/ $.fn.loadWithoutCache = function (){ var elem = $(this); var func = arguments[1]; $.ajax({ url: arguments[0], cache: false, dataType: "html", success: function(data, textStatus, XMLHttpRequest) { elem.html(data); if(func != undefined){ func(data, textStatus, XMLHttpRequest); } } }); return elem; }
-
6.사샤 내가 믹스를 사용, 좋은 생각이다.
사샤 내가 믹스를 사용, 좋은 생각이다.
나는 함수를 작성
LoadWithoutCache: function (url, source) { $.ajax({ url: url, cache: false, dataType: "html", success: function (data) { $("#" + source).html(data); return false; } }); }
그리고 초기화에 대한 예를 들어, 내 페이지가 diferents 부품에 대한 호출 :
INIT : 기능 (actionUrl1, actionUrl2, actionUrl3) {
했다 ExampleJS = {
Init: function (actionUrl1, actionUrl2, actionUrl3) ExampleJS.LoadWithoutCache(actionUrl1, "div1");
ExampleJS.LoadWithoutCache (actionUrl2, "DIV2"); ExampleJS.LoadWithoutCache (actionUrl3, "div3"); } },
-
7.이것은 IE의 특정 짜증이다. 기본적으로 당신은 서버에서 응답과 '더 캐시'HTTP 헤더를 다시 보낼해야합니다.
이것은 IE의 특정 짜증이다. 기본적으로 당신은 서버에서 응답과 '더 캐시'HTTP 헤더를 다시 보낼해야합니다.
-
8.PHP를 들어, 당신이 원하는 정보를 제공 스크립트에 다음 행을 추가합니다 :
PHP를 들어, 당신이 원하는 정보를 제공 스크립트에 다음 행을 추가합니다 :
header("cache-control: no-cache");
또는, 쿼리 문자열에 고유 한 변수를 추가 :
"/portal/?f=searchBilling&x=" + (new Date()).getTime()
-
9.당신이 JQuery와 모바일로 DOM에 캐시와 곧 휴대폰에 메모리 부족의 문제로 실행되어 방문하는 모든 페이지와 같은 고유 한 URL을 만들기 위해 타임 스탬프를 사용하지 마십시오.
당신이 JQuery와 모바일로 DOM에 캐시와 곧 휴대폰에 메모리 부족의 문제로 실행되어 방문하는 모든 페이지와 같은 고유 한 URL을 만들기 위해 타임 스탬프를 사용하지 마십시오.
$jqm(document).bind('pagebeforeload', function(event, data) { var url = data.url; var savePageInDOM = true; if (url.toLowerCase().indexOf("vacancies") >= 0) { savePageInDOM = false; } $jqm.mobile.cache = savePageInDOM; })
이 코드는 페이지가로드되기 전에, 당신은 URL이 캐시에 원하는 것을인지 여부를 결정하고 그에 따라 캐시 매개 변수를 설정 () url.indexOf을 사용할 수 있습니다 활성화합니다.
= ""에서는 window.location을 사용하지 마십시오; URL 변경에 그렇지 않으면 주소로 이동하고 pagebeforeload가 발생하지 않습니다. 간단하게 사용이 문제를 해결하기 위해 위해하면 window.location.hash = "";
-
10.당신이 jQuery의 .load () 메소드를 고수 할 경우, 자바 스크립트 타임 스탬프와 같은 URL에 독특한 무언가를 추가 할 수 있습니다. "+ 새 Date (). getTime를 ()". 공지 사항 나는 당신의 PID 변수를 변경하지 않도록 "= 시간의"를 추가했다.
당신이 jQuery의 .load () 메소드를 고수 할 경우, 자바 스크립트 타임 스탬프와 같은 URL에 독특한 무언가를 추가 할 수 있습니다. "+ 새 Date (). getTime를 ()". 공지 사항 나는 당신의 PID 변수를 변경하지 않도록 "= 시간의"를 추가했다.
$('#searchButton').click(function() { $('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val()+'&time='+new Date().getTime()); });
-
11.false로 캐시 세트가있는 버전으로 JQuery와로드 기능을 대체 할 수 있습니다.
false로 캐시 세트가있는 버전으로 JQuery와로드 기능을 대체 할 수 있습니다.
(function($) { var _load = jQuery.fn.load; $.fn.load = function(url, params, callback) { if ( typeof url !== "string" && _load ) { return _load.apply( this, arguments ); } var selector, type, response, self = this, off = url.indexOf(" "); if (off > -1) { selector = stripAndCollapse(url.slice(off)); url = url.slice(0, off); } // If it's a function if (jQuery.isFunction(params)) { // We assume that it's the callback callback = params; params = undefined; // Otherwise, build a param string } else if (params && typeof params === "object") { type = "POST"; } // If we have elements to modify, make the request if (self.length > 0) { jQuery.ajax({ url: url, // If "type" variable is undefined, then "GET" method will be used. // Make value of this field explicit since // user can override it through ajaxSetup method type: type || "GET", dataType: "html", cache: false, data: params }).done(function(responseText) { // Save response for use in complete callback response = arguments; self.html(selector ? // If a selector was specified, locate the right elements in a dummy div // Exclude scripts to avoid IE 'Permission Denied' errors jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : // Otherwise use the full result responseText); // If the request succeeds, this function gets "data", "status", "jqXHR" // but they are ignored because response was set above. // If it fails, this function gets "jqXHR", "status", "error" }).always(callback && function(jqXHR, status) { self.each(function() { callback.apply(this, response || [jqXHR.responseText, status, jqXHR]); }); }); } return this; } })(jQuery);
이 JQuery와로드 후 실행 글로벌이 곳을 놓고 모든 설정해야합니다. 기존로드 코드는 더 이상 캐시되지 않습니다.
-
12.이 시도:
이 시도:
$("#Search_Result").load("AJAX-Search.aspx?q=" + $("#q").val() + "&rnd=" + String((new Date()).getTime()).replace(/\D/gi, ''));
내가 그것을 사용하는 경우 그것은 잘 작동합니다.
-
13.나는 (아파치와 같은) 일부 서버가 구성되지 않은 경우 특별히 당신이 "노 캐시"에 HTTP 헤더를 설정 한 경우에도 허용 또는 "캐시", 서버는 기본적으로 "캐시"응답을 보낼 수 있습니다을 거부 것으로 나타났습니다. 그래서 확인이 응답을 sents하기 전에 서버가 아무것도 "캐시"되지 않도록합니다
나는 (아파치와 같은) 일부 서버가 구성되지 않은 경우 특별히 당신이 "노 캐시"에 HTTP 헤더를 설정 한 경우에도 허용 또는 "캐시", 서버는 기본적으로 "캐시"응답을 보낼 수 있습니다을 거부 것으로 나타났습니다. 그래서 확인이 응답을 sents하기 전에 서버가 아무것도 "캐시"되지 않도록합니다
아파치의 경우에는 그럴 필요
1) 편집 "disk_cache.conf"파일 - 비활성화 캐시 추가로 지시를 "CacheDisable은 / local_files"
2) mod_cache가 모듈 (우분투로드 "는 sudo a2enmod 캐시"및 "는 sudo a2enmod disk_cache")
3) 아파치 (우분투 "sudo는 서비스 아파치를 다시 시작")를 다시 시작합니다;
이것은 서버 측의 트릭을 사용하지 캐시를해야한다. 건배! :)
-
14.이 코드는 도움이 될 수 있습니다
이 코드는 도움이 될 수 있습니다
var sr = $("#Search Result"); sr.load("AJAX-Search.aspx?q=" + $("#q") .val() + "&rnd=" + String((new Date).getTime()) .replace(/\D/gi, ""));
from https://stackoverflow.com/questions/168963/stop-jquery-load-response-from-being-cached by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 테이블의 동적 텍스트 상자에 대한 설정 클래스 검증 (0) | 2020.09.28 |
---|---|
[JQUERY] jQuery로 JSONP 요청 아약스 크로스 도메인 확인 (0) | 2020.09.28 |
[JQUERY] 커서가 자바 스크립트를 사용하는 텍스트를 삽입 / JQuery와 (0) | 2020.09.28 |
[JQUERY] JQuery와 UI 날짜 선택기가 비활성화 토요일과 일요일 (공휴일)로 만들 수 있습니다? (0) | 2020.09.28 |
[JQUERY] 아약스 요청은 200 OK를 반환하지만 오류 이벤트가 대신 성공 해고 (0) | 2020.09.27 |