이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12520|회답: 2

[Jquery] [Turn] to jQuery.getJSON 캐싱 문제

[링크 복사]
게시됨 2015. 9. 5. 오전 10:21:58 | | |
jquery의 getJson 메서드는 서버에 첫 번째 요청 후 캐시에서 동일한 요청을 직접 읽으며, 더 이상 데이터베이스를 요청하지 않습니다.

해결 방법은 다음과 같습니다:

1 통화마다 URL을 다르게 설정하세요
방법: 매개변수에 임의 수를 추가합니다.
예시 1:
jQuery.getJSON("$!{ Root}/a/a/s.ashx",{"ID":id,"Name":name,"Path":p ath,random:Math.random()},function(responseText){}
예시 2:
"xxx.aspx?randID="+Math.random
예시 3:
"xxx.aspx?randID="+ escape(new Date())
2 캐시를 False로 설정하기
$.Ajax uncached version:
$.Ajax({
type:"GET"
url:'test.html',
cache:false,
dataType:"html",
success:function(msg){
경고(MSG);
}
});
3. labels.html 파일 상단에 다음 문장을 포함하세요:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Expires" CONTENT="-1">
4. load 함수는 HTML뿐만 아니라 labels.php 같은 스크립트도 호출할 수 있으며, php 파일의 헤더 함수를 사용할 수 있습니다:

<?php

헤더("Cache-Control: no-cache, must-revalidate");

?>
5 get 대신 post를 사용하는 방법.
게시물 방식을 사용할 때는 다음 사항을 주의 깊게 살펴야 합니다:
헤더의 Context-Type을 application/x-www-form-urlencode로 설정하여 서버가 엔터티에 매개변수 변수가 존재함을 인식하도록 합니다. 보통 XmlHttpRequest 객체의 SetRequestHeader("Context-Type","application/x-www- form-urlencoded)를 사용합니다; ")。 예시:

xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
매개변수는 이름/값에 대응하는 키-값 쌍이며, 각 값 쌍은 > 기호로 구분됩니다. 예를 들어, var name=abc&sex=man&age=18, var name=update.php에 주목하세요.

abc&sex=man&age=18과 var name=?abc&sex=man&age=18이 잘못 표기되어 있습니다;
인자는 Send 메서드로 전송됩니다. 예: xmlHttp.send(name); 만약 get 메서드라면, 직접 xmlHttp.send(null);

서버 측 요청 매개변수는 Get과 Post를 구분합니다. 만약 get(get) 메서드라면, $username = $_GET["username"]; 만약 게시물 방식이라면, $username = $_POST["username"];
6 서버 측에 헤더("Cache-Control: no-cache, must-reva lidate")를 추가;
7 ajax 요청 전송 전에 xmlHttpRequest.setRequestHeader("If-Modified-Since","0")를 추가;
8 ajax 요청 전송 전에 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache")를 추가;




이전의:c# 변환 'CD'F5C' '6210'F '성공작전'으로
다음:html5 폼을 기반으로 jQuery html5 플러그인 검증하기
 집주인| 게시됨 2015. 9. 5. 오전 10:23:09 |
url?username=test&aaa= Math.random()
 집주인| 게시됨 2015. 9. 5. 오전 10:24:24 |
$.getJson 메서드 같은 페이지가 반복적으로 요청될 때, 캐시에서 데이터만 로드되며, URL 뒤에는 매번 동적 매개변수가 따라와야 합니다
$.getJson('a.ashx?t='+new Date() ,'{a:b}',fun.... )
매개변수 목록의 매개변수 변경은 유효하지 않습니다.
function changeValidateCode(obj) {
//获取当前的时间作为参数,无具体意义
var timenow = new Date().getTime();
//每次请求需要一个不同的参数,否则可能会返回同样的验证码
이는 브라우저의 캐싱 메커니즘과 관련이 있으며, 페이지를 캐시하지 않게 설정해 이 매개변수를 사용하지 않도록 할 수도 있습니다.
obj.src='rand.action?d='+TimeNow;
}
<img id='rand' src='rand.action?t=<%=new Date().getTime() %>' onclick='changeValidateCode(this)' title='잘 안 보여? 하나 바꿔! ' 너비='50' 높이='22'/>
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com