>웹 프론트엔드 >JS 튜토리얼 >IE(get method)_javascript 기술에서 Ajax 캐싱 문제에 대한 빠른 솔루션

IE(get method)_javascript 기술에서 Ajax 캐싱 문제에 대한 빠른 솔루션

WBOY
WBOY원래의
2016-05-16 17:04:47955검색

오랜 고민 끝에 프로그램은 jquery의 로드 메서드를 사용하여 요청을 두 번째로 보낼 수 없는 이유가 이상합니다. 바이두에서 좀 조사해봤는데 get 메소드를 사용해서 로드를 요청하는 걸 몰랐기 때문에 IE 브라우저가

에 응답하지 않습니다.

캐시되었습니다. 온라인에서 많은 솔루션을 검색했는데 여기에 더 포괄적인 솔루션이 있다고 생각합니다. 크게 클라이언트 측 솔루션과 서버 측 솔루션으로 구분됩니다.

1. 클라이언트 솔루션
IE 액세스 정책: 인터넷 옵션--검색 기록--설정--임시 인터넷 파일 옵션을 방문할 때마다 변경할 수도 있습니다. 웹페이지에서 사용

1: AJAX가 요청한 페이지 뒤에 무작위 기능을 추가하면 무작위 시간 기능을 사용할 수 있습니다

javascript에서 보낸 URL 뒤에 t=Math.random()을 추가하세요.
예: URL "&" "t=" Math.random() 또는 new Date();

2: XMLHttpRequest가 요청을 보내기 전에 XMLHttpRequest.setRequestHeader("If-Modified-Since", "0")를 추가합니다.

일반적으로 여기서 XMLHttpRequest는 직접 사용되지 않습니다.

다음과 같은 코드를 찾을 수 있습니다.
XXXXX.send(YYYYYY)
그런 다음
XXXXX.setRequestHeader( "수정된 이후","0")
XXXXX.send(YYYYYY);

실습을 통해 두 가지 방법 모두 매우 효과적이라는 것이 입증되었습니다.
1. 서버에 헤더("Cache-Control: no-cache, must-revalidate")를 추가합니다.
2. xmlHttpRequest.setRequestHeader("If -Modified-Since", "0"); 3. Ajax로 요청을 보내기 전에 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache")를 추가합니다.
4. Math.random(); //물론 여기에서 새로운 매개변수를 임의로 선택할 수 있습니다.
5. 네 번째 방법은 세 번째 방법과 유사하며, URL 매개변수 뒤에 "?timestamp="를 추가합니다 new Date().getTime( ); //이 방법을 권장합니다
6. GET 대신 POST를 사용하세요. 권장하지 않음


2. 서버측 솔루션:
Struts2를 예로 들어 보겠습니다. Struts2 서버측 사용

Xml 코드


코드 복사 코드는 다음과 같습니다.<패키지 이름 ="json -nocache" extends="json-default">
<인터셉터>
<인터셉터 이름="cachingHeadersInterceptor" class="com.ssa.pct.web.interceptor.CachingHeaderInterceptor" /> ;



< /interceptor-stack>






Java 코드


코드 복사 코드는 다음과 같습니다.public class CachingHeaderInterceptor AbstractInterceptor를 확장합니다 {
개인 정적 최종 긴 serialVersionUID = 1L;
public String Intercept(ActionInvocation invocation)은 예외를 발생시킵니다. = null) {

response.setHeader("Cache-Control", "no-cache");

response.setHeader("Pragma", "no-cache");

response.setHeader(" 만료", "-1");
}
return invocation.invoke();
}

}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.