亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jqGrid數據存儲在瀏覽器緩存中嗎?

jqGrid數據存儲在瀏覽器緩存中嗎?

慕村9548890 2019-11-20 12:52:29
jqGrid是否在文件系統上存儲網格數據?如果是這樣,您是否需要清除瀏覽器的緩存以將其刪除?還是只是通過JavaScript(和瀏覽器)將其存儲在內存中?只是關閉瀏覽器會刪除數據嗎?這些問題的答案會根據您是否正在使用而改變loadOnce嗎?
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

默認情況下,從服務器加載的數據(JSON或XML數據)將保存在瀏覽器緩存中,但在下一個請求中不使用。原因是,默認情況下,jqGrid會實現ajax請求的相同行為,例如jQuery.ajax的cache:false參數。這意味著所有請求都有一個附加參數,例如timestamp。它使所有GET請求的URL唯一,因此本地保存的數據將不會使用兩次。因此,如果您希望jqGrid不使用本地瀏覽器緩存中的數據,則無需執行任何操作。ndnd=1286296925096


如果您要另外拒絕在本地保存數據(例如,出于安全原因或為了減少使用永遠不會使用的信息填充本地緩存),則可以在服務器響應的HTTP標頭中包含no-store指令。


如果確實要緩存服務器請求并使用數據,則應使用prmNames: { nd:null} jqGrid選項。然后,可以從本地瀏覽器緩存中獲取下一個請求的數據。如果這樣做,我建議您在服務器響應的HTTP標頭中包含Cache-Control指令,該指令強制使用所需的緩存行為。例如,我個人使用Cache-Control: max-age=0并使用ETag發送數據中的哈希值。因此,所有ajax請求都將發送到服務器以重新驗證本地緩存。所有請求將自動包含If-None-MatchHTTP標頭以及ETag來自本地緩存的數據。如果數據沒有更改,服務器可以響應HTTP/1.1 304 Not Modified沒有主體,而不是HTTP/1.1 200 OK擁有數據的主體。該響應HTTP/1.1 304 Not Modified允許瀏覽器使用本地緩存。


更新:我另外使用了Cache-Control: private關閉緩存代理上的數據并聲明可以緩存數據,但不能與其他用戶共享的功能。


如果您想了解有關HTTP標頭的緩存控制的更多信息,建議您閱讀以下“ 緩存教程”。


查看完整回答
反對 回復 2019-11-20
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

我不明白“如果不使用HTTP標頭該怎么辦?”這一說法。每個開始的URL http://...將使用HTTP協議加載相應的HTML頁面。您可以使用IE / Chrome的Fiddler或Developer Tools(按F12鍵啟動并進入“網絡”標簽)進行網絡跟蹤(確切地說是HTTP跟蹤)。如果使用prmNames: { nd: null },mtype: "GET"則Internet Explorer(尤其是舊版本)可能會出現問題,因為它會緩存舊請求,并且不會向服務器發送新請求。

查看完整回答
反對 回復 2019-11-20
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

所以我建議Cache-Control: private, max-age=0在服務器響應中設置HTTP標頭。另外,可以使用它prmNames: { nd: null }來刪除絕對不需要的參數。這Cache-Control是HTTP標準的一部分,所有Web瀏覽器都會向服務器發送新的Ajax請求,而不僅僅是從Web瀏覽器緩存中獲取先前的請求。這是最干凈的方法。

查看完整回答
反對 回復 2019-11-20
  • 3 回答
  • 0 關注
  • 751 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號