Reduce svg icon requests during rendering
What does this MR do?
Reduce svg icon requests during rendering.
To avoid duplicate requests this adds a memoized promise that resolves to a DOM that contains GitLab icons in svg format.
Background
When displaying charts, the sgv path is often used to display elements in the chart, currently each of these displays triggers an ajax call to fetch the paths and discards the rest of the file.
This change keeps the document in memory and refers to it when other/more icons are shown.
Screenshots
This reduces the requests for icons to one. That's ~114KB
per request (requests that are not cached!).
before | after |
---|---|
Chrome's profiler shows an additional 73.728 KB to cache the svgs.
Does this MR meet the acceptance criteria?
Conformity
- [-] Changelog entry
- [-] Documentation (if required)
-
Code review guidelines -
Merge request performance guidelines -
Style guides - [-] Database guides
- [-] Separation of EE specific content
Availability and Testing
-
Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process. -
Tested in all supported browsers -
Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
-
Label as security and @ mention @gitlab-com/gl-security/appsec
-
The MR includes necessary changes to maintain consistency between UI, API, email, or other methods -
Security reports checked/validated by a reviewer from the AppSec team
Closes #31734 (closed)