鍍金池/ 問答/Python/ 前端分幾次獲取一段數(shù)據(jù),如何讓django只從數(shù)據(jù)庫獲取一次數(shù)據(jù)

前端分幾次獲取一段數(shù)據(jù),如何讓django只從數(shù)據(jù)庫獲取一次數(shù)據(jù)

假設(shè)前端第一次訪問時,django就一次性從數(shù)據(jù)庫獲取了500個數(shù)據(jù),并返回1-100數(shù)據(jù)給前端,前端下次獲取時,django直接就從上次獲取的數(shù)據(jù)中,返回101-200數(shù)據(jù)。

不知道該如何解決,目前想法
1.想利用緩存,但緩存每次都返回完整數(shù)據(jù)。
2.想利用中間件,判斷session來返回數(shù)據(jù)。
3.利用分頁,但我不清楚是不是只獲取一次數(shù)據(jù)

由于對django不太清楚,所以存有疑問

回答
編輯回答
別硬撐

雖然我沒這么寫過(也是小白一枚),但是我有個思路,你瞅瞅:

可以用redis做一個存儲,然后通過ajax發(fā)請求 GET http://xxx.com/?start=0@limit=100
然后你的view分析get的start和limit參數(shù)從redis里拿數(shù)據(jù)

其實也用到了數(shù)據(jù)庫,但是肯定比mysql要快

2017年2月9日 21:39
編輯回答
醉淸風(fēng)

首先前端訪問大部分是無狀態(tài)的,換言之基本上后端不應(yīng)該“認識”前端,所以也不應(yīng)該分批給數(shù)據(jù)。

其次數(shù)據(jù)庫本身也會有緩存,所以如果兩次都是取同樣的數(shù)據(jù),數(shù)據(jù)庫并不會真的跑兩次,很大可能跑一次,所以壓力可能并不大。

最后如果你非得這么實現(xiàn)的話那只能通過緩存了。不過命中之類的會有問題,所以我看來并不是很優(yōu)的解。

2018年9月23日 06:59