最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

胡子哥哥 2023-12-14 16:42:23
我是 Javascript 新手,并且對(duì) Django 有很好的經(jīng)驗(yàn)。我為我的公司構(gòu)建了一個(gè)圖表平臺(tái)來跟蹤指標(biāo)——它最初是作為學(xué)習(xí) Javascript 的業(yè)余愛好項(xiàng)目,但后來演變成了更多東西。該網(wǎng)站正確加載和顯示數(shù)據(jù),但在移動(dòng)設(shè)備上速度慢得令人難以置信。所有的計(jì)算都是在客戶端由JS完成。有很多指標(biāo)需要計(jì)算,因此思考過程是“以對(duì)象格式向客戶端發(fā)送所有 Django 查詢,并在那里處理它們,以免減慢服務(wù)器速度?!?nbsp;我也不希望有大量的代碼塊來處理服務(wù)器上的每個(gè)指標(biāo)(我這樣做是錯(cuò)誤的嗎?)。這里有一些問題:一般來說,我應(yīng)該在哪里處理數(shù)據(jù),服務(wù)器端還是客戶端?我該如何優(yōu)化這段代碼?我運(yùn)行 3 個(gè)查詢,需要查找每天每個(gè)指標(biāo)的點(diǎn)擊次數(shù)(頁面瀏覽量、選擇加入和計(jì)劃調(diào)用)。例如,我想顯示一個(gè)圖表,顯示一個(gè)月內(nèi)的頁面瀏覽量,其中 x 軸是日期,y 軸是計(jì)數(shù)。為了做到這一點(diǎn),我運(yùn)行一個(gè)嵌套的 for 循環(huán)來迭代查詢,然后計(jì)算該日期的頁面瀏覽量。當(dāng)我針對(duì)三個(gè)不同的指標(biāo)運(yùn)行此函數(shù)時(shí),速度非常慢。數(shù)據(jù)通過 ajax 調(diào)用接收(這是最佳的嗎?)。以下是計(jì)算當(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];每個(gè)查詢都會(huì)返回一個(gè)不同長度的對(duì)象。以下是包含示例數(shù)據(jù)的最終圖表的示例
查看完整描述

1 回答

?
qq_笑_17

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

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


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


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

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


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')


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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