【发布时间】:2017-07-05 03:46:46
【问题描述】:
我正在进行一个私有应用程序的项目,我们使用的是 Angular 4(当前为 4.1.2 版本),我们有一个页面,其中多个 base64 图像在 html 上呈现。问题是:加载这些图像时,性能会大幅下降。
更具体地说,我们从休息服务接收这些图像,并使用以下方式将图像加载到表格中:
<tr *ngFor="let i of dataArray;">
<td>
<span>
<img [src]="i.avatar !== null && i.avatar !== undefined ? 'data:image/png;base64,'+i.avatar : 'assets/img/avatar.png'">
</span>
</td>
<tr>
可以进行某种优化,或者我在这里缺少什么?正如我所说,当这些图像被加载(大约有 30 张图像)时,所有应用程序都会变得迟钝,菜单几乎停止工作,这使得任何操作都很难执行。这在 Chrome 和 Firefox 上都发生了,老实说,我不确定这是 Angular、Html 还是什么问题。
谢谢
【问题讨论】:
-
我怀疑这与角度有关,这只是浏览器忙于工作。我会尝试将值一一添加到
dataArray。您可以使用<img [src]="..." (load)="addNext()">之类的加载事件,仅在加载前一个后添加一个。 -
我最近学到的一个技巧。而是将图像绘制到画布上。
-
它很慢,因为您重新渲染每个摘要,并且 dataURL 没有被缓存。预先缓存它们,不要在 dom 中进行模板化,或者使用 react.js 之类的智能渲染器
标签: javascript html image angular base64