在我的IIS服務器上,我有一個json文件,它在一天和5分鐘之間以可變頻率進行更新。jQuery/AJAX/Chrome/IIS:如何強制高速緩存重新驗證(304)?
第一次的負載給了我200預期與所有正確的標題。第二次加載等返回304未修改,也如預期的那樣。當文件被更改時,我得到一個200和IIS重新上傳文件,全部按照計劃。
樣品200響應:
Accept-Ranges:bytes
Content-Encoding:gzip
Content-Type:application/json
Date:Tue, 20 Jan 2015 23:05:06 GMT
ETag:"604a75cb335d01:0"
Last-Modified:Tue, 20 Jan 2015 22:52:40 GMT
Server:Microsoft-IIS/7.5
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:ASP.NET
樣品304響應:
Accept-Ranges:bytes
Date:Tue, 20 Jan 2015 23:07:20 GMT
ETag:"604a75cb335d01:0"
Last-Modified:Tue, 20 Jan 2015 22:52:40 GMT
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET
問題
後4-6負載左右,我開始變得200 OK (from cache)
沒有文件傳輸(只需從緩存中獲取文件),並從Chrome獲取以下請求頭文件:
Chrome未向服務器發送請求,因此沒有收到預期的304(或200 w /新的文件下載)。
嘗試
我不能使用cache: false
,因爲這不會觸發,我想,如果該文件尚未更新到出現304。
我嘗試使用ifModified: true
這讓我得到我想要的304,但success()
函數接收undefined
作爲數據。
這是Ajax調用我使用:
$.ajax({
url: "currentData.json",
//cache: false, // Not using this because I'll never get 304
//ifModified: true, // Doesn't populate data in success()
success: function (data) {console.log(data);}
});