我对视图优化有疑问。我需要每分钟从机器上读取一次(如果它是否正在运行),并且需要使用引导进度条来显示它。 现在是代码:
this.sanitizer.bypassSecurityTrustResourceUrl('http://www.myurl.com');
当前正在数据库中加载20,000条记录。有什么方法可以优化此视图?
答案 0 :(得分:1)
重点是我们不想制作20k的小div,我们需要为每个警告栏写一个注释,例如:
让我们按照时间和日期进行10个订购。最重要的信息是度量值,因为它指定了bar元素的类(成功,警告)。
1:值:10,日期:2018-10-10,小时:14:00,机器:1
2:值:10,日期:2018-10-10,小时:14:01,机器:1
3:值:10,日期:2018-10-10,小时:14:02,机器:1
4:值:15,日期:2018-10-10,小时:14:03,机器:1
5:值:15,日期:2018-10-10,小时:14:04,机器:1
6:值:15,日期:2018-10-10,小时:14:05,机器:1
7:值:15,日期:2018-10-10,小时:14:06,机器:1
8:值:10,日期:2018-10-10,小时:14:07,机器:1
9:值:10,日期:2018-10-10,小时:14:08,机器:1
10:值:10,日期:2018-10-10,小时:14:09,机器:1
让此机器的workValue为11。现在它放10格
3 *警报
4 *成功
3 *警报
,我们希望将它们设为3个div而不是10个div(它们使用javascript按属性group-hierarchy进行分组)
答案 1 :(得分:0)
因此,对此进行优化的一种可行解决方案是在从数据库中获取数据时过滤所需的度量。换句话说,您的if条件应转换为查询:
{% if date(current.Date) >= date(date1) and date(current.Date) <= date(date2) and date(current.Hour) >= date(hour1) and date(current.Hour)<= date(hour2) %}
被CurrencyRepository
内的类似内容替换:
public function findCurrencyValuesByMachineByIdInTimeFrame(
int $machineId,
DateTime $startDate,
DateTime $endDate,
int $startHour,
int $endHour
): array {
$queryBuilder = $this->createQueryBuilder('machine');
return $queryBuilder
->where('currency.machine = :id')
->andWhere('currency.Date >= :startDate')
->andWhere('currency.Date <= :endDate')
->andWhere('currency.Hour >= :startHour')
->andWhere('currency.Hour <= :endHour')
->setParameters([
'id' => $machineId,
'startDate' => $startDate,
'endDate' => $endDate,
'startHour' => $startHour,
'endHour' => $endHour,
])
->getQuery()
->getResult()
;
}
这假设货币与机器有关。这样一来,只会提取所需的货币值。