Jquery jqGrid数据存储在浏览器缓存中?

Jquery jqGrid数据存储在浏览器缓存中?,jquery,jqgrid,privacy,Jquery,Jqgrid,Privacy,jqGrid是否在文件系统上存储网格数据?如果是,是否需要清除浏览器的缓存以将其删除 或者它只是通过JavaScript(和浏览器)存储在内存中?关闭浏览器会删除数据吗 这些问题的答案是否会根据您是否正在使用loadOnce而改变?默认情况下,从服务器加载的数据(JSON或XML数据)将保存在浏览器缓存中,但不会在下一次请求时使用。原因是默认情况下jqGrid实现了ajax请求的相同行为,如的cache:false参数。这意味着所有请求都有一个附加参数nd,比如nd=1286296925096,

jqGrid是否在文件系统上存储网格数据?如果是,是否需要清除浏览器的缓存以将其删除

或者它只是通过JavaScript(和浏览器)存储在内存中?关闭浏览器会删除数据吗


这些问题的答案是否会根据您是否正在使用
loadOnce
而改变?

默认情况下,从服务器加载的数据(JSON或XML数据)将保存在浏览器缓存中,但不会在下一次请求时使用。原因是默认情况下jqGrid实现了ajax请求的相同行为,如的
cache:false
参数。这意味着所有请求都有一个附加参数
nd
,比如
nd=1286296925096
,它是时间戳。它使所有GET请求的URL都是唯一的,因此本地保存的数据不会被使用两次。因此如果希望jqGrid不使用本地浏览器缓存中的数据,则无需执行任何操作

如果您希望另外拒绝在本地保存数据(例如,由于安全原因或为了减少本地缓存中永远不会使用的信息的填充),您可以在服务器响应的HTTP头中包含指令

如果确实要缓存服务器请求并使用数据,则应
prmNames:{nd:null}
。然后,可以从本地浏览器缓存中获取来自下一个请求的数据。如果这样做,我建议您在服务器响应的HTTP头中包含强制使用所需缓存行为的指令。例如,我个人使用
缓存控制:max age=0
并使用
ETag
和发送数据的散列。因此,所有ajax请求都将被发送到服务器重新验证本地缓存。如果没有与本地缓存数据的
ETag
匹配的
HTTP头,则所有请求将自动包含
。如果数据未更改,服务器可以使用响应
HTTP/1.1 304 not Modified
无正文而不是
HTTP/1.1 200 OK
来回答,正文中有数据。响应
HTTP/1.1 304 Not Modified
允许浏览器使用本地缓存

更新:我另外使用了
缓存控制:private
,它关闭代理上的数据缓存,并声明数据可以缓存,但不能与其他用户共享


如果您想了解有关HTTP头缓存控制的更多信息,我建议您阅读以下内容。

默认情况下,从服务器加载的数据(JSON或XML数据)将保存在浏览器缓存中,但不会在下一次请求时使用。原因是默认情况下jqGrid实现了ajax请求的相同行为,如的
cache:false
参数。这意味着所有请求都有一个附加参数
nd
,比如
nd=1286296925096
,它是时间戳。它使所有GET请求的URL都是唯一的,因此本地保存的数据不会被使用两次。因此如果希望jqGrid不使用本地浏览器缓存中的数据,则无需执行任何操作

如果您希望另外拒绝在本地保存数据(例如,由于安全原因或为了减少本地缓存中永远不会使用的信息的填充),您可以在服务器响应的HTTP头中包含指令

如果确实要缓存服务器请求并使用数据,则应
prmNames:{nd:null}
。然后,可以从本地浏览器缓存中获取来自下一个请求的数据。如果这样做,我建议您在服务器响应的HTTP头中包含强制使用所需缓存行为的指令。例如,我个人使用
缓存控制:max age=0
并使用
ETag
和发送数据的散列。因此,所有ajax请求都将被发送到服务器重新验证本地缓存。如果没有与本地缓存数据的
ETag
匹配的
HTTP头,则所有请求将自动包含
。如果数据未更改,服务器可以使用响应
HTTP/1.1 304 not Modified
无正文而不是
HTTP/1.1 200 OK
来回答,正文中有数据。响应
HTTP/1.1 304 Not Modified
允许浏览器使用本地缓存

更新:我另外使用了
缓存控制:private
,它关闭代理上的数据缓存,并声明数据可以缓存,但不能与其他用户共享


如果您想了解有关HTTP头缓存控制的更多信息,我建议您阅读以下内容。

如果我们不使用HTTP头怎么办?我只使用了prmNames:{nd:null},它的工作原理和我所寻找的一样完美。@Jaikrat:我不理解“如果我们不使用HTTP头怎么办?”这句话,每个开始
http://...
将使用HTTP协议加载相应的HTML页面。您可以使用IE/Chrome或开发者工具(按F12键启动并打开网络选项卡)进行网络跟踪(确切地说是HTTP跟踪)。如果使用
prmNames:{nd:null}
mtype:“GET”
则Internet explorer(尤其是旧版本)可能会出现问题,因为它会缓存旧请求,并且不会向服务器发送新请求。@Jaikrat:因此我建议在服务器响应中设置HTTP头
缓存控制:private,max age=0
。此外,还可以使用
prmNames:{nd:null}
删除绝对不需要的参数。
缓存控制
是HTTP标准的一部分,所有web浏览器都将向服务器发送新的Ajax请求,而不仅仅是从web浏览器缓存获取以前的请求。这是最干净的方法。如果我们不使用HTTP头怎么办?我只用