我有一个按钮onclick它应该去另一个页面包含jqGrid ..但如果用户想要去看看数据,它应该被缓存和显示,而不是打电话给服务器.. ..表单值默认缓存但jqGrid ...如何缓存它?jqGrid缓存网格数据
回答
数据的缓存可以实现,但并不容易。您必须在服务器端定义一些基于caching strategy选择的HTTP标头。例如可以使用“缓存控制” 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 2和Concurrency 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").load("newPage.jsp")
这样的呼叫来填充页面正文(或ID为“main”的div)。
这些替代方案的优点是您将停留在同一页面并且可以使用所有JavaScript数据。例如,如果网格使用“loadonce:true”参数,然后使用数据值作为新的jqGrid的“数据”参数创建新的jqGrid,则可以从“data”参数获取旧的jqGrid数据。
表单是HTML规范的一部分,jqGrid不是......你为什么期望网格的数据被缓存?这就是说,如果使用GET url来检索网格的数据,某些浏览器(如IE)会缓存GET的结果。您需要使URL唯一(例如,通过附加时间戳)以防止数据被缓存。但请记住,这不会缓存所有浏览器中的数据。
以及这是我对页面的要求...说我有一个库存页面和交易历史页面..现在当用户想要查看库存中有什么数据时,他/她只需点击按钮并看到它。 ..我不想打太多的服务器调用,因为它的价格昂贵,而不是如果最后查看的页面可以缓存,比它将解决问题...我不确定它是否可能与jqGrid ...谢谢!虽然 – paul 2010-09-14 03:11:30
- 1. 子网格缓存或停止子网格数据被删除(jqGrid)
- 2. json数据缓存为extjs网格
- 3. Flex数据网格可能存在数据缓存问题
- 4. Jqgrid - 子网格数据不加载
- 5. jqgrid +使用新数据刷新网格
- 6. jqGrid使用数据填充网格
- 7. Jqgrid子网格json数据未显示
- 8. jqGrid子网格与“本地”数据
- 9. jqGrid更新在子网格中的行不刷新缓存
- 10. jqGrid数据存储在浏览器缓存中?
- 11. 空数据到jqgrid显示在网格中没有数据
- 12. jqGrid网格卸载
- 13. 的jqGrid格列次网格
- 14. jqGrid数据格式和jsonReader
- 15. 在Node.js中缓存网站数据
- 16. 错误的网站元数据缓存
- 17. 缓存tableView单元格数据
- 18. JqGrid不保存数据到数据库
- 19. JQGrid - 将colmodel保存到本地缓存
- 20. Jqgrid - 发送参数设置网格
- 21. jqGrid子网格不显示
- 22. jqgrid隐藏的子网格
- 23. jqGrid - 刷新网格问题
- 24. jqGrid重新加载网格
- 25. jqgrid中的空网格
- 26. jqGrid和JSON - 空网格
- 27. Jqgrid是空的,不会从主网格加载json数据
- 28. 按未装入网格的数据订购jqgrid?
- 29. 根据行数调整jqGrid的大小? - 网格高度?
- 30. jqGrid - 只显示网格形式的数据
我不确定OP是否使用JSON,但如果他是,则有一种方法可以缓存原始JSON数据。他可以将缓存的数据传递给那个会填满网格的新页面吗?我只是想知道你怎么看待这样的事情?我不知道是否有可能... – webdad3 2010-09-15 23:22:02
@Jeff V:我回答了很多** paul **的问题,并且知道他使用JSON,但是我写的所有内容对于任何ajax请求都是正确的('datatype :例如“xml”)。如果来自服务器的第一个响应在HTTP标头中包含“Cache-Control:max-age = 60',则来自同一浏览器的所有请求和来自任何其他页面的**的所有请求将从本地缓存中获取,而不发送任何请求到服务器。你必须像我写的那样使用'prmNames:{nd:null}'。所以这种方式工作。我花了很多天来实现'ETag'缓存,并在不同的浏览器中测试了这一点。所有人都这样做。所以缓存将工作 – Oleg 2010-09-15 23:35:57
您的实现看起来很复杂,但我会尝试实现...只是想知道是否有任何性能问题,如果我将缓存像5000-6000记录?是啊我使用loadonce:真正的本地排序,过滤 – paul 2010-09-16 04:03:37