2
我是新來ReactJS和Django的REST框架(DRF)ReactJS裝載狀態數據,優化技術
def MyModel(model):
...
status = ChoiceField(['new', 'in progress', 'completed'...])
使用它在我的應用程序,我會爲每個單獨的國家部分。所以數據需要分離。 我的問題是有很多不同的狀態,約6或7.
所以我使用不同的路線爲每個狀態。 /新/ INPROGRESS等,但每一次,而不是僅僅1
loadMymodelsFromServer: function() {
this.loadNewMymodelsFromServer();
this.loadAssignedMymodelsFromServer();
this.loadAllocatedMymodelsFromServer();
this.loadDraftMymodelsFromServer();
this.loadPublishedMymodelsFromServer();
this.loadArchivedMymodelsFromServer()
this.loadSponsoredMymodelsFromServer();
this.loadCurrentUserMymodelsFromServer();
},
loadNewMymodelsFromServer: function() {
var url = this.props.url + "/new/";
$.ajax({
url: url,
dataType: 'json',
cache: false,
success: (function (data) {
this.setState({ new_mymodels: data });
}).bind(this),
error: (function (xhr, status, err) {
console.error(url, status, err.toString());
}).bind(this)
});
},
數據這造成約7的請求已經被刷新了幾次,對之類的東西刪除操作和更新操作,如JS數組不支持這些操作。
將一個巨大的請求中未排序的所有數據加載到JS for循環中會更好嗎?
感覺不對,因爲我知道數據庫已經過優化來查詢像這樣的參數,而不是Javascript,所以我做錯了什麼?
「JS陣列不支持這些操作。」 - 它將幾乎總是被_faster_拼接一個JS數組並且在原地進行更新(通常以_micro_seconds爲單位進行測量),而不是進行網絡調用以重新獲取數據(通常以10或100的_milli_seconds爲單位)。 – Brandon
這是真的,但無論如何,這個系統使用輪詢實時更新 它最終將使用套接字,但無論哪種方式仍然需要網絡調用 – straykiwi
任何原因,你不只有一個Ajax調用運行所有查詢並返回一個包含所有結果的對象,因此您只需進行一次調用而不是7次? – Brandon