gpt4 book ai didi

jquery - jqGrid 缓存网格数据

转载 作者:行者123 更新时间:2023-12-01 04:29:36 25 4
gpt4 key购买 nike

我有一个单击按钮,它应该转到包含 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com