盡管jQuery在浏覽器ajax調用的時候對緩存提供了很好的支持
首先要做的事情是在服務器端支持HTTP GET
緩存解釋
jQuery全局對象裡的ajax方法提供了一些options來支持緩存和Conditional GETs功能
$
ifModified: [true|false]
cache: [true|false]
})
ifModified選項定義的是在ajax調用的時候是否支持Conditional GETs功能
cache選項基本上是覆蓋服務器端返回的http header裡的所有關於緩存的設置
讓我們來看幾個場景
服務器端響應裡設置No
服務器端為王
JS代碼
$(
$
url:
ifModified: false
cache: true
success: function (data
$(
}
})
})
C#代碼
public ActionResult NoCache()
{
// 禁用緩存
Response
return Json(new { count = Count++ }
}
服務器端響應裡設置過期時間
服務器端設置過期時間用於緩存數據
JS代碼
$(
$
url:
ifModified: false
cache: true
success: function (data
$(
}
})
})
C#代碼
public ActionResult Expires()
{
Response
return Json(new { count = Count++ }
}
客戶端從來不緩存數據
客戶端決定每次都要最新的數據(不能使用緩存)
JS代碼
$(
$
url:
ifModified: false
cache: false
success: function (data
$(
}
})
})
C#代碼
public ActionResult Expires()
{
// 不管服務器端怎麼設置都沒用
Response
return Json(new { count = Count++ }
}
服務器端和客戶端使用Conditional Gets功能驗證緩存數據
客戶端將條目放在緩存裡
JS代碼
$(
$
url:
ifModified: true
cache: true
success: function (data
$(
}
})
})
C#代碼
public ActionResult ExpiresWithConditional()
{
if (Request
{
return new HttpStatusCodeResult((int)HttpStatusCode
}
Response
Response
return Json(new { count = Count++ }
}
上述MVC action中的代碼只是一個例子(非真實代碼)
總結
詳細通過這
From:http://tw.wingwit.com/Article/program/net/201311/11886.html