오랫동안 던지면 jQuery로드 방법을 사용하여 프로그램에서 요청을 요청했습니다. 바이두가 있는데
캐시. 인터넷에서 많은 솔루션을 검색했습니다. 주로 클라이언트 솔루션 및 서버 솔루션으로 나뉩니다.
1. 클라이언트 솔루션
IE 액세스 전략 : 인터넷 옵션 브라우징 역사적 기록 설정-임시 인터넷 파일 옵션
1 : AJAX가 요청한 페이지 후에 임의의 함수 추가 랜덤 타임 함수를 사용할 수 있습니다.
javaScript가 보낸 URL 이후 t = math.random () 추가
예 : url+"&"+"t ="+math.random ();
2 : xmlhttprequest.setRequestheader 추가 ( "if-modify-since", "0")
정상적인 상황에서 xmlhttprequest는 직접 사용되지 않습니다.
이 코드를 찾을 수 있어야합니다
xxxxx.send (yyyyyy);
그런 다음 바꾸십시오
xxxxx.setRequestheader ( "if-modify-since", "0");
xxxxx.send (yyyyyy);
실습은 두 방법 모두 매우 효과적이라는 것을 증명했습니다.
1. 서버에서 헤더 ( "캐시 제어 : 없음 캐시, 꼭 봐야 할 일 반복")를 추가하십시오
2. xmlhttprequest.setRequestheader ( "if-modified-since", "0");
3. xmlhttprequest.setRequestheader ( "캐시-통계", "no-cache");
4. ADD "? FRESH =" + MATH.RANDOM () ajax의 URL 매개 변수 후.
5. 네 번째 방법은 URL 매개 변수를 추가 한 후에 " + gettime ()을 추가합니다
6. Post 교체를 사용하십시오 : 권장되지 않습니다
2. 서버 -사이드 솔루션 :
struts2를 예로 들어보십시오.
struts2 서버 -사이드 메소드
XML 코드
다음과 같이 코드 코드를 복사하십시오.
<package name = "json-nocache"actends = "json-default">
<Wterceptors>
<인터셉터 이름 = "캐싱 헤드 겨울 interceptor" />
<인터셉터-스택 이름 = "defaultsecurityStack">
<interceptor-Ref name = "defaultstack" />
<Interceptor-Ref name = "Cachingheadersinterceptor" />
</Internetor-Stack>
</인터셉터>
<default-Interceptor-Ref name = "defaultsecurityStack" /> />
</패키지>
자바 코드
다음과 같이 코드 코드를 복사하십시오.
공개 클래스 캐싱 헤드 러너 셉터 확장 AbstractIntercepor {
개인 정적 최종 최종 긴 SerialversionUID = 1L;
공개 문자열 절편
ActionContext Context = invocation.getInVoconText ();
httpservletresponse 응답 = (httpservletresponse) context.get (strutsstatics.http_response);
if (응답! = null) {
Response.SetHeader ( "Cache-Control", "No-Cache");
Response.SetHeader ( "Pragma", "No-Cache");
응답 .Setheader ( "만료", "-1");
}
return invocation.invoke ();
}
}