grails - Grails remoteLink与<a>

标签 grails gsp

我正在构建一个简单的应用,该应用从db获取项目列表(目前大约有3000行),呈现带有项目名称的表,然后每当我们选择特定项目时就显示项目规格。
使用g:remoteLink而不是旧的basic标签渲染html表时,我注意到了一个小的性能问题。

我有一个获取数据并呈现模板的 Controller

def items = sql.rows("select * from items")
render (template:'itemList',model:[result:items])

我也有一个简单的索引文件
<body>
<g:remoteLink controller="items" action="getItems" update="itemList">Items</g:remoteLink>
    <div class="body" style="width: 1000px;">
        <div id="itemList"></div>
    </div>
</body>

和我的itemList模板(缓慢,大约4秒)
<table width="100%" cellspacing="0" cellpadding="0" border="1" id="mytable">
    <g:each var="item" in="${result}">
    <tr>
    <td><g:remoteLink controller="items" action="getItemSpec" update="itemDetail" params="${ [itemcode: item.itemcode] }">
        ${item.itemcode}</g:remoteLink></td></tr>
    </g:each>
</table>

另一个版本的itemList模板(使用remoteLink生成的链接,速度大约为400ms)
<table width="100%" cellspacing="0" cellpadding="0" border="1" id="mytable">
    <g:each var="item" in="${result}">
    <tr>
    <td>
<a onclick="jQuery.ajax({type:'POST',data:{'itemcode': '${item.itemcode}'}, url:'/myApp/items/getItemSpec',success:function(data,textStatus){jQuery('#itemDetail').html(data);},error:function(XMLHttpRequest,textStatus,errorThrown){}});return false;" href="/myApp/items/getItemSpec?itemcode=${item.itemcode} "> ${item.itemcode}</a>
</td>
</tr>
    </g:each>
</table>

有没有一种方法可以使用remoteLink而不是使用a标签来加快渲染速度?

谢谢 !!

最佳答案

我建议考虑的几件事...

1.)装载3,000视野内的物体通常不是一个好主意。尝试考虑通过显示此数据量来真正实现的目标。

2)如果最终您打算使用jqgrid或datatables之类的内容,则不要专注于该工具之一可能本质上会有所不同的事情。转到所需的最终解决方案,然后从那里进行调整。

3.)考虑页面上正在生成的所有代码以及实际使用了多少代码。如果您生成3,000个链接,而用户可能只单击5或10,则您可能会使用一些jQuery处理行单击时链接的动态加载。这将加快渲染速度,因为浏览器无法显示HTML。

4.)最后,像Grails这样的框架以及其他一些框架,可以使您轻松地完成可能牺牲一些性能的工作。充分利用某些东西可能需要您带来很多便利。

请享用!希望这可以帮助。

关于grails - Grails remoteLink与<a>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14776510/

相关文章:

mongodb - 常规查询两个日期之间的MongoDB

css - 使用渲染插件将模板转换为pdf时,css背景不起作用

pdf - 如何为grails创建pdf编辑器

grails - 如何在Grails中呈现来自api的html响应

grails - 在GSP中嵌套grails函数调用的语法($ {remoteFunction}中的动态值作为<g:remoteLink>的参数

grails - 在gsp中动态选择

升级到 2.3.5 后不再调用 BootStrap 中添加的 Grails 事件方法

grails - 仅适用于某些html页面和JavaScript的Grails插件

Grails 3 集成规范具有奇怪的事务行为

sql - Grails withCriteria,两个数据库列之间的值?