Ajax 요청 결과 의 캐 시 문 제 를 어떻게 해결 하 는 지 설명 합 니 다.
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public string GetCurrentTime()
{
return DateTime.Now.ToLongTimeString();
}
}
기본 Action 방법 Index 에 대응 하 는 View 정 의 는 다음 과 같다.우 리 는 5 초 마다 JQuery 의 방법 을 이용 하여 Ajax 방식 으로 GetCurrentTime 작업 을 호출 하고 돌아 오 는 결 과 를 표시 합 니 다
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<script type="text/javascript" src="@Url.Coutent(“~/Scripts/jquery-1.7.1.min.js”)"></script>
<script type="text/javascript">
$(function () {
window.setInterval(function () {
$.ajax({
url:'@Url.Action("GetCurrentTime")',
success: function (result) {
$("ul").append("<li>" + result + "</li>");
}
});
}, 5000);
});
</script>
</head>
<body>
<ul></ul>
</body>
</html>
서로 다른 브 라 우 저 로 프로그램 을 실행 하면 다음 그림 에서 보 듯 이 Chrome 브 라 우 저 에 서 는 실시 간 시간 을 표시 할 수 있 지만 IE 에 표 시 된 시간 은 모두 같 습 니 다 2.URL 주소 에 접 두 사 를 추가 하 는 방식 으로 문 제 를 해결 합 니 다.IE 가 Ajax 요청 에 대한 반환 결 과 는 요청 주소 에 따라 캐 시 되 기 때문에 이 캐 시 메커니즘 이 적용 되 기 를 원 하지 않 는 다 면 요청 할 때마다 요청 주소 에 다른 접 두 사 를 추가 하여 이 문 제 를 해결 할 수 있 습 니 다.이 예 에 대해 저 희 는 다음 코드 를 통 해 요청 주소 에 현재 시간 을 기반 으로 하 는 검색 문자열 을 추가 합 니 다.프로그램 을 다시 실행 하면 IE 는 실시 간 시간 을 표시 합 니 다
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(function () {
window.setInterval(function () {
$.ajax({
url:'@Url.Action("GetCurrentTime")?'+ new Date().toTimeString() ,
success: function (result) {
$("ul").append("<li>" + result + "</li>");
}
});
}, 5000);
});
</script>
</head>
</html>
3.jQuery 의 Ajax 설정 을 통 해 문 제 를 해결 합 니 다.실제로 jQuery 는 이것 에 대한 Ajax 설정 을 가지 고 있 습 니 다.우 리 는 다음 과 같은 방식 으로$.ajaxsetup 방법 으로 Ajaz 의 캐 시 체 제 를 금지 해 야 합 니 다
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(function () {
$.ajaxSetup({ cache: false });
window.setInterval(function () {
$.ajax({
url:'@Url.Action("GetCurrentTime")',
success: function (result) {
$("ul").append("<li>" + result + "</li>");
}
});
}, 5000);
});
</script>
</head>
</html>
실제로 jQuery 의 이 메커니즘 도 요청 주소 에 서로 다른 검색 문자열 접 두 사 를 추가 함으로써 이 루어 집 니 다.이것 은 Fiddler 차단 요청 을 통 해 확인 할 수 있 습 니 다.4.맞 춤 형 응답 을 통 해 문 제 를 해결 할 수 있 습 니 다.저 희 는 요청 한 응답 을 통 해 결과 에 대한 캐 시 를 제어 할 수 있 습 니 다.이 를 위해 다음 과 같은 NoCacheAttribute 라 는 Action Filter 를 정의 합 니 다.현재 HttpResponse 의 SetCacheability 방법 을 사용 하여 캐 시 옵션 을 NoCache 로 설정 합 니 다.이 NoCacheAttribute 특성 이 GetCurrentTime 방법 에 적 용 된 후에 도 Google 프로그램 을 실행 하면 IE 에서 실시 간 으로 시간 을 얻 을 수 있 습 니 다
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[NoCache]
public string GetCurrentTime()
{
return DateTime.Now.ToLongTimeString();
}
}
public class NoCacheAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{}
}
실제 NoCacheAttribute 특성 상 메시지 메 시 지 를 최종 제어 하 는 Cache-Control 헤더 로 설정 하고 결 과 를 캐 시 하지 않도록 브 라 우 저 에 지시 하 는'no-cache'로 설정 합 니 다.다음 과 같은 GetCurrentTime 요청 에 대한 응답 메시지 입 니 다
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 03 Jan 2013 12:54:56 GMT
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 4.0
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: text/html; charset=utf-8
Content-Length: 10
Connection: Close
8:54:56 PM
자신의 마음 을 조용히 지 키 고 겉 만 번지르르 하 게 보다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
원생 Ajax와 jQuery Ajax의 차이점 예시 분석선언: 이번에 소개한 것은 aax와 백그라운드를 이용하여 데이터 교환을 하는 작은 예이기 때문에 demo는 서버를 통해 열어야 합니다.서버 환경은 구축하기 매우 좋다. 인터넷에서wamp나xampp를 다운로드하여 한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.