jquery - jqGrid 缓存网格数据

标签 jquery caching jqgrid

我有一个单击按钮,它应该转到包含 jqGrid 的另一个页面..但是如果用户想要查看数据,则应该缓存并显示数据,而不是调用服务器....表单值是默认缓存,但是 jqGrid ...如何缓存它?

最佳答案

数据的缓存可以实现,但是并不容易。您必须在服务器端定义一些基于 caching strategy 的 HTTP header 选择了。例如,您可以使用 max-age “Cache-Control”HTTP header 的类似

Cache-Control: max-age=60

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

对于 ETags 来说,可以使用更复杂的策略实现服务器端缓存,因为固定的缓存时间是可能的。 (实体标签)。这是我最喜欢的策略,但其实现相对复杂(详细信息请参见 Guidance on a better way to retain filtering options when using ASP.NET MVC 2Concurrency handling of Sql transactrion)。

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

  1. 在同一页面上创建网格,作为定义 jqGrid 参数的表单中的按钮和其他过滤器(请参阅 How to filter the jqGrid data NOT using the built in search/filter box )。
  2. 使用 jQuery.Remove() 的表单“重新绘制”页面jQuery.Empty()和新的ajax要求。例如 jQuery("body").Empty()jQuery("div#main").Empty()哪里<div id="main">位于 body 顶部的某处。然后您可以使用 jQuery("body").load("newPage.htm") 之类的调用填充页面主体(或 id="main"的 div)或jQuery("div#main").load("newPage.jsp") .

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

关于jquery - jqGrid 缓存网格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704886/

相关文章:

javascript - 将两个单选按钮的值相加作为购物车

c# - 数据库表的 Entity Framework 和本地缓存

php - Symfony 2 : Doctrine Cache Namespace

javascript - 如何使用链接按钮将 JQGrid 单元格值传递给 Jquery 函数

javascript - jQuery UI Datepicker 的问题

javascript - 隐藏目标 div 后点击事件冒泡

jquery - 不同宽度的 bxslider 图像

ios - 在ios应用程序上缓存图像的最佳方式?

javascript - 在鼠标悬停时从 jqgrid 获取数据

javascript - 从 Jqgrid 中对日期列 dd/mm/yyyy 进行排序