我是 Javascript 新手,并且對 Django 有很好的經(jīng)驗。我為我的公司構(gòu)建了一個圖表平臺來跟蹤指標(biāo)——它最初是作為學(xué)習(xí) Javascript 的業(yè)余愛好項目,但后來演變成了更多東西。該網(wǎng)站正確加載和顯示數(shù)據(jù),但在移動設(shè)備上速度慢得令人難以置信。所有的計算都是在客戶端由JS完成。有很多指標(biāo)需要計算,因此思考過程是“以對象格式向客戶端發(fā)送所有 Django 查詢,并在那里處理它們,以免減慢服務(wù)器速度?!?nbsp;我也不希望有大量的代碼塊來處理服務(wù)器上的每個指標(biāo)(我這樣做是錯誤的嗎?)。這里有一些問題:一般來說,我應(yīng)該在哪里處理數(shù)據(jù),服務(wù)器端還是客戶端?我該如何優(yōu)化這段代碼?我運(yùn)行 3 個查詢,需要查找每天每個指標(biāo)的點(diǎn)擊次數(shù)(頁面瀏覽量、選擇加入和計劃調(diào)用)。例如,我想顯示一個圖表,顯示一個月內(nèi)的頁面瀏覽量,其中 x 軸是日期,y 軸是計數(shù)。為了做到這一點(diǎn),我運(yùn)行一個嵌套的 for 循環(huán)來迭代查詢,然后計算該日期的頁面瀏覽量。當(dāng)我針對三個不同的指標(biāo)運(yùn)行此函數(shù)時,速度非常慢。數(shù)據(jù)通過 ajax 調(diào)用接收(這是最佳的嗎?)。以下是計算當(dāng)天點(diǎn)擊次數(shù)的 Javascript 代碼:var endpoint = "/my/url/"; var opt_ins = []; var schedules = []; var page_views = []; $.ajax({ method: "GET", url: endpoint, success: function (data) { opt_ins = data.opt_ins; schedules = data.audit_calls; page_views = data.page_views; }, error: function (error) { console.log("ERROR --> " + error); }, async: false });async function getDateCounts(data) { dates = []; count_dates = []; let i = 0; for (const element of data) { let date = new Date(element.date_created).toLocaleDateString("en-US"); if (!dates.includes(date)) { dates.push(date); let count = 0; for (const item of data) { let check_date = new Date(item.date_created).toLocaleDateString("en-US"); if (check_date === date) { count++; } } count_dates.push(count); count = 0; } } return [dates, count_dates];每個查詢都會返回一個不同長度的對象。以下是包含示例數(shù)據(jù)的最終圖表的示例
如何優(yōu)化該算法的速度?Django 和 JavaScript
胡子哥哥
2023-12-14 16:42:23