我是 Javascript 新手,并且对 Django 有很好的经验。我为我的公司构建了一个图表平台来跟踪指标——它最初是作为学习 Javascript 的业余爱好项目,但后来演变成了更多东西。
该网站正确加载和显示数据,但在移动设备上速度慢得令人难以置信。所有的计算都是在客户端由JS完成。有很多指标需要计算,因此思考过程是“以对象格式向客户端发送所有 Django 查询,并在那里处理它们,以免减慢服务器速度。” 我也不希望有大量的代码块来处理服务器上的每个指标(我这样做是错误的吗?)。
这里有一些问题:
一般来说,我应该在哪里处理数据,服务器端还是客户端?
我该如何优化这段代码?我运行 3 个查询,需要查找每天每个指标的点击次数(页面浏览量、选择加入和计划调用)。
例如,我想显示一个图表,显示一个月内的页面浏览量,其中 x 轴是日期,y 轴是计数。为了做到这一点,我运行一个嵌套的 for 循环来迭代查询,然后计算该日期的页面浏览量。
当我针对三个不同的指标运行此函数时,速度非常慢。
数据通过 ajax 调用接收(这是最佳的吗?)。以下是计算当天点击次数的 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];
每个查询都会返回一个不同长度的对象。
qq_笑_17
相关分类