使用的框架是symfony, twig.
页面大约有6000条数据需要现实, 我是全部数据加载后使用dataTable来分页, 同时查询.
但是在加载时明显会卡住, 偶尔还会跳出busy 是否continue 或 stop script的confirm窗.
内存使用在67MB左右.
这是后台代码
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$qb->select('p.id, p.name as pname, wave.name as wname')
->from('AlbatrossAceBundle:Project', 'p')
->leftJoin('p.customwave', 'wave');
$result = $qb->getQuery()->getArrayResult();
return $this->render('AlbatrossAceBundle:Project:index.html.twig', array(
'entities' => $result,
));
}
这是我的dataTable配置
<script type="text/javascript">
$(function () {
$('#data-table').dataTable({
"sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
"bFilter": true,
"aaSorting": [[0, 'desc']],
"iDisplayLength": 20
});
$('#data-table_filter').css('display', 'block');
});
</script>
建议后端分页。
6000条数据无论对于前端还是后端来说都过于巨大了,这不是中意不中意的问题,这是能做不能做的问题,答案也很简单,不能做。
如果真的有6000条数据要用js来处理,写原生js可能会提高一部分效率,假使目前js引擎的速度都提高10倍,前端OK了,后端如此大的数据量也会在个位数并发的时候直接拖垮数据库。
写代码是为了解决问题,而不是为了个人感觉爽。
一次性加载6000条数据,在前端分页,不是违反最佳实践,而从根本上就是个错误的设计。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。