使用的架構是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配置
不想在後台分頁, 非常中意前端分頁和查詢. 請問有什麼方法提高效率呢?
回複內容:
使用的架構是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配置
不想在後台分頁, 非常中意前端分頁和查詢. 請問有什麼方法提高效率呢?
謝邀。
建議後端分頁。
6000條資料無論對於前端還是後端來說都過於巨大了,這不是中意不中意的問題,這是能做不能做的問題,答案也很簡單,不能做。
如果真的有6000條資料要用js來處理,寫原生js可能會提高一部分效率,假使目前js引擎的速度都提高10倍,前端OK了,後端如此大的資料量也會在個位元並發的時候直接拖垮資料庫。
寫代碼是為瞭解決問題,而不是為了個人感覺爽。
一次性載入6000條資料,在前端分頁,不是違反最佳實務,而從根本上就是個錯誤的設計。
應該是有問題的,能不能查看是否代碼有問題,或者這個外掛程式有可能有記憶體泄露等bug。
呵呵,78MB,感覺有點...
用過前端緩衝4000條資料,用的是taffy-db,無壓力。
請問你6000條怎樣的資料?? 是JSON嗎?