У меня есть угловой компонент, называемый папка-браузер, который служит браузером папок.Он отображает папки в вертикальном списке, а когда папка открывается, он отображает папки в этой папке, если они есть:
![enter image description here](https://i.stack.imgur.com/seN9V.png)
ВотHTML код для этого:
<div *ngFor="let element of folders">
<div class="folder" (click)="selectFolder(element)" [ngClass]="{'selected': checkSelected(element)}">
<div class="chevron-container">
<img class="chevron-icon" src="{{getChevronIcon(element)}}">
</div>
<img class="folder-icon" src="{{folderIcon}}" />
<span class="folder-name">{{element.name}}</span>
</div>
<div class="sub-folders" *ngIf="element.expanded">
<folder-browser [folders]="element.children"></folder-browser>
</div>
</div>
Мой вопрос о двух <img>
элементах (есть три различных SVG - элемент img шеврона использует либо нижний, либо правый шеврон).Как видите, эти элементы img используются много раз;они не только находятся внутри *ngFor
div, этот компонент браузера папок используется рекурсивно для отображения подпапок.
Src этих элементов img указывает на CDN.Глядя на сетевую вкладку инструментов разработчика Chrome, я вижу, что каждый инициализируемый компонент браузера папок выполняет три вызова CDN для трех типов изображений.Кроме того, каждый раз, когда папка открывается и закрывается (что переключает шеврон между лицевой стороной вниз и вправо), из CDN загружаются нижний и правый шевронные SVG.
Поскольку используются только три различных SVG,Я хотел бы, чтобы браузер загружал каждый из них только один раз, а затем использовал кэшированное изображение для каждого последующего элемента img.Похоже, это происходит в некоторой степени, поскольку при инициализации компонента выполняется только один запрос для каждого типа изображения, в отличие от того, сколько папок находится в * ngIf.Однако при инициализации нового экземпляра того же компонента было бы хорошо, если бы он использовал кэшированные изображения, поскольку они одинаковы.
Есть ли встроенный способ сделать это?