Предполагая относительно современный SVG-поддерживающий настольный браузер и SVG, состоящий из сотен аналогичных простых узлов:
- В документе может быть настроено столько отдельных элементов формы (
<circle>
,<line>
и т.д.) с их собственными атрибутами. - Документ может быть настроен как несколько элементов
<symbol>
и множество отдельных экземпляров<use>
, которые размещают их и соответственно их размер (W3 spec).
Я понимаю причины семантики и кода для использования <symbols>
/<use>
, но сейчас я не занимаюсь этим, я строго оптимизирую производительность рендеринга, преобразования и DOM. Я мог видеть, что <symbol>
работает подобно повторному использованию спрайтов во Flash, сохраняя память и обычно являясь хорошей практикой. Тем не менее, я был бы удивлен, если разработчики браузеров так думают (и это не является целью этой функции).
Изменить: я не ожидаю, что базовые символы будут изменены или добавлены в течение жизненного цикла SVG, только местоположения экземпляра, размеры и т.д.
- Есть ли четкие шаблоны для производительности
<symbol>
/<use>
? - Как индивидуально это относится к отдельным реализациям браузера?
- Существуют ли различия между повторным использованием
<symbol>
vs<g>
vs inested<svg>
?