我同意Craig Stuntz的观点:动态内容HTTP压缩的使用可能非常有效。但是,也非常有用的是减少发送的数据。
首先,您应该没有时间将HTML数据发送回jqGrid。jqGrid具有 自定义格式程序
(请参见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter和jqGrid中的一个小示例:始终显示select的可编辑列),可用于填充以下
<TD>元素的元素jqGrid单元格。此外,如果要修改网格数据,jqGrid数据内的html数据将非常糟糕。在这种情况下,应修改html数据并将其发送回服务器。因此,最好的方法是将纯数据从服务器发送到jqGrid,并使用自定义格式化程序将数据格式化为html片段。
通常,您可以使用自定义格式化程序来“解码”或“解压缩”数据。例如,如果在一列中仅包含“ Bla Bla Bla”和“ Ha Ha
Ha”之类的数据,则可以发送0(而不是“ Bla Bla Bla”)和1(而不是“ Ha Ha Ha”)。在该列的自定义格式程序内部,将0和1转换回“
Bla Bla Bla”和“ Ha Ha Ha”字符串。如果您有常规的重复数据,则此方法将行不通,但可以改用next(
jsonReader)方法。
还有另一种数据压缩方式:
jsonReader作为函数使用(请参见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#jsonreader_as_function和带有ASP.NET
MVC的jquery-启用ajax Web服务)和用法
jsonmap),也可以将其用作函数。这项技术稍微复杂一点,但是如果您在问题中添加当前发送的JSON数据示例和jqGrid定义示例(尤其是
colModel),那么我将编写一个示例,说明如何使用
jsonReader和
jsonmap压缩数据。
更新 :在我看来,您的代码的一个地方非常令人怀疑:
Name = "<div id= '" + i.id+ "'>" + i.Name + "</div>",
jqGrid将
id属性添加到网格行(
<tr>元素),但是您向
<div>单元格(
<td>元素的子
<tr>元素)内部的元素添加了相同的ID手册。这会给您带来很多麻烦。不允许HTML具有双ID。
对应您的主要问题,我可以写很多一般性建议,例如:
- 最好将boolean作为
0
或1
代替发送"true"
,"false"
以减少数据量。 - 如果您的网格中有id数据,则可以使用键列选项(请参阅http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options)在JSON数据中仅发送一次id值。
- 以最紧凑的格式yy-md传输日期值,并将其转换为您希望在客户端使用的日期格式方面的文本格式。
- 等等
但是您可能首先想解决 特定 应用程序中的主要性能问题。为了能够改善您的特定应用程序应用程序,您应该在问题中发布有关解决方案的更多信息:
- jqGrid定义包括完整的colModel定义(与asp.net mvc网站上的服务器端JSON和jqGrid loadComplete之间的长时间延迟不同)
- 数据转储
paginatedDat
,您将返回的数据Json(paginatedData)
或更好的JSON数据发送给客户端(例如,您可以从Fiddler http://www.fiddler2.com/fiddler2/复制数据) - 您使用的jqGrid,jQuery和jQuery UI的版本信息
- 有关数据模型和数据库的更多信息也可能会有所帮助
如果没有此类信息,您将无法获得真正的利益就花钱。
更新2 :您可以在[Jqgrid3.7中]找到优化JSON数据的实际示例,但不会在Internet
Explorer中显示行



