jquery – jqGrid缓存网格数据

我有一个按钮onclick它应该转到另一个页面包含jqGrid ..但如果用户想去看看它应该被缓存和显示而不是调用服务器….表单值是默认缓存但是jqGrid ……如何缓存呢?

解决方法

可以实现数据的缓存,但这并不容易.您必须在服务器端定义一些基于所选 caching strategy的HTTP头.例如,您可以使用“Cache-Control”HTTP标头的 max-age
Cache-Control: max-age=60

这意味着,服务器响应应在60秒内缓存在客户端上.如果您打算使用它,则必须定义jqGrid的其他参数prmNames:{nd:null},这将删除使用任何服务器请求中包含的时间戳发送nd参数.执行此步骤后,jqGrid使用的所有ajax请求将在时间间隔(60秒)内从本地缓存获取.

对于ETags(实体标签),可以将策略更复杂的服务器端高速缓存实现为固定的高速缓存时间.这是我最喜欢的策略,但它的实现相对复杂(详见Guidance on a better way to retain filtering options when using ASP.NET MVC 2Concurrency handling of Sql transactrion).

如果您无法使用缓存数据的方式(由于某些原因),我建议您选择以下两种变体:

>在与定义jqGrid参数的表单中的按钮和其他过滤器相同的页面上创建网格(参见How to filter the jqGrid data NOT using the built in search/filter box).
>使用与jQuery.Remove()或jQuery.Empty()和新的ajax请求相关的表单“重新绘制”页面.例如,使用jQuery(“body”).Empty()或jQuery(“div#main”).Empty()其中< div id =“main”>在身体的某个部位.然后你可以用jQuery(“body”).load(“newPage.htm”)或jQuery(“div#main”)这样的调用来填充页面体(或id为“main”的div).load(“newPage” .JSP“).

这些替代方案的优点是您将保持在同一页面上,并且可以使用所有JavaScript数据.例如,如果网格使用“loadonce:true”参数,则可以从’data’参数中获取旧的jqGrid数据,然后使用数据值作为新jqGrid的’data’参数创建新的jqGrid.

相关文章

1.第一步 设置响应头 header(&#39;Access-Control-Allow...
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的...
jquery.serializejson.min.js的妙用 关于这个jquery.seriali...
JS 将form表单数据快速转化为object对象(json对象) jaymou...
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http...