第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何優(yōu)化該算法的速度?Django 和 JavaScript

如何優(yōu)化該算法的速度?Django 和 JavaScript

胡子哥哥 2023-12-14 16:42:23
我是 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ù)的最終圖表的示例
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊

數(shù)據(jù)庫是聚合這些數(shù)據(jù)的好地方,并將減少需要傳遞的數(shù)據(jù)量。


該aggregate()方法將使您獲得如下數(shù)據(jù)集:


[{'date':COUNT},{'date':COUNT},...]

TruncDate()如果您有日期時間,則允許按天分組。


from django.db.models import Sum

from django.db.models.functions import TruncDate



models.AgentPageViews.objects.filter(date_created__gt=self.time_period).

    values(date=TruncDate('date_created')).

    order_by("date_created").annotate(Sum('views')


查看完整回答
反對 回復(fù) 2023-12-14
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號