簡體   English   中英

如何在不重寫整個應用程序(Laravel + jQuery,SPA風格)的情況下對結果進行分塊(延遲加載?)

[英]How can I chunk results (lazy load?) without rewriting my whole application (Laravel + jQuery, SPA style)

我已經開發了具有單頁應用程序概念的Web應用程序,但是沒有現代技術和框架。 因此,我有一個jQuery頁面,該頁面動態地向localhost請求數據-Laravel實例(在給定的時間間隔內)編譯數據庫中的條目。

因此,客戶希望查看上周的所有條目,該應用程序運行良好。 但是,如果他想查看整個上個月的結果……那么,它們是如此之多,以至於php的默認執行時間不足以處理所有數據(30秒)。 我當然可以輕松地覆蓋它,但是jQuery客戶端將遍歷這些對象數組並對其進行處理(排序,查找,求和...)。 因此,我什至不確定jQuery是否可以處理這么多數據。

所以我的問題可以分為兩部分:

  1. 可以使用laravel-> paginate()來使jQuery的ajax請求也可以對數據進行分塊嗎? 它是如何工作的(希望它不會強迫我重寫所有代碼)。

  2. 如何在客戶端上存儲大量信息? 這只是暫時的,但是用戶會在我的網頁上閑逛相當長的時間,我不希望他們每次按下按鈕都等待5分鍾

謝謝。

如果您想提供一個接口來存儲大量數據,則應該對數據進行分頁 這是一種標准方法,所以我確定您的客戶會接受的。

使用分頁非常簡單-請在此處查看Laravel 5.0的文檔: http ://laravel.com/docs/5.0/pagination

為了在后端對結果進行分頁,您需要在查詢中調用paginate($ perPage) ,而不是在控制器中調用get() ,如下所示:

$users = User::whereIsActive(true)->paginate(15);

這將返回分頁結果,每頁15條記錄。 頁碼將從請求的page參數中獲取。 為了獲得用戶的第三頁,您需要使用前端jQuery應用將請求發送至網址,例如:

/users?page=3

我不建議在前端應用程序中緩存數據。 數據可以由其他用戶更改,您甚至都不知道。 通過分頁,您的請求應該足夠輕巧,以免再擔心發送到獲取每一頁結果的請求。

不確定您是否訂閱了laracast,但是Jeffery Way在解釋Laravel的功能方面令人贊嘆,我強烈推薦他的視頻。

簡而言之,您可以對結果進行分頁,然后在視圖上調用項目的foreach時,可以array_chunk()結果顯示它們的顯示方式。 但是將使用URL中的查詢來獲取分頁的結果,如果您已經使用了大量的jQuery將所有內容都保留在同一頁面上,則我不確定這是您想要的。

https://laracasts.com/lessons/crazy-simple-pagination

但是假設您已經使用已經為json數據編寫的任何jQuery對結果進行分頁...

您還可以使用查詢范圍來獲取所需的數據,以達到創建一個簡單的api與ajax一起使用所需的時間。 我認為這可能就是您要尋找的。

因此,這是假設您已經使用JavaScript手動進行分頁的情況下所要做的。

  1. 創建一些查詢范圍以過濾不同時間長度的數據
  2. 使用查詢范圍創建簡單的路由以從URI中獲取結果
  3. 從路由中獲取json數據,該路由將ajax請求預置到創建的URI

有關查詢范圍的更多信息: http : //laravel.com/docs/5.1/eloquent#query-scopes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM