標籤:
jquery在瀏覽器ajax調用的時候,對緩衝提供了很好的支援,POST方式不能被緩衝,
使用POST的原因,明確了資料不能被緩衝,或者避免JSON攻擊(JSON返回資料的時候可以被入侵)
jquery全域對象裡的ajax提供了一些方式來支援緩衝和ConditionalGETs功能
$.ajax({ ifModified:true, cache:true, });
ifModified選項定義的是在ajax調用的時候是否支援Conditional GETs功能,jquery會自動處理服務端返回的名為Last-Modified的header值,
它首先會請求伺服器使用ConditionalGETs功能重新驗證該條目,如果伺服器返回狀態代碼304,jquery會重新使用緩衝裡的該條目,
cache選項:如果為false,jquery會在請求的url後面附加一個時間戳記,以區分之前的url地址,這樣每次請求是新的,請求的資料肯定也是新的
但是如果伺服器明確定義了Response響應不能被緩衝的話,jquery也沒用,ajax裡面的cache選項被忽略,伺服器裡的禁用緩衝如下:
// 禁用緩衝 Response.Cache.SetCacheability(HttpCacheability.NoCache);
伺服器和用戶端使用Conditional Gets功能驗證快取資料
用戶端將條目放在緩衝裡,在到期之後重新驗證,伺服器端必須實現Conditional Gets功能(使用ETags或者last modified的header
js代碼
$.ajax({ ifModified:true,//這是關鍵 cache: true, success: function (data,status,xhr) { } });
伺服器代碼:
if (Request.Headers["If-Modified-Since"] != null ) { return new HttpStatusCodeResult((int)HttpStatusCode.NotModified); }
MVC中使用jquery的瀏覽器緩衝問題