Juniorrrrr
@Juniorrrrr

Как правильно кешировать SVG спрайт?

Поставлена задача заменить 10 запросов к разным свг иконкам на один запрос к свг спрайту.

Создал отдельный файл свг, svgSprite.svg и в него вставил все иконки, подобно этому примеру

<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
  <symbol id="icon-1" viewBox="0 0 24 24">
      <rect x="0.5" y="0.5" width="23" height="23" rx="3.5"></rect>
      <path d="M10 12.5L16 18V7L10 12.5Z" fill="white"></path>
      <path d="M9 16.5556V8" stroke="white" stroke-width="2" stroke-linecap="round"></path>
  </symbol>
  <symbol id="icon-2" viewBox="0 0 24 24">
      <rect x="0.5" y="0.5" width="23" height="23" rx="3.5"></rect>
      <path d="M10 12.5L16 18V7L10 12.5Z" fill="white"></path>
      <path d="M9 16.5556V8" stroke="white" stroke-width="2" stroke-linecap="round"></path>
  </symbol>
...
</svg>


Дальше в коде использую так

<svg xmlns="http://www.w3.org/2000/svg">
      <use href={путь к файлу#idсвг} />
    </svg>


Все отображается правильно, проблема возникает при повторном ререндере компонента, в network браузера на каждый рендер компонента происходит запрос GET со статусом 304 данного спрайта, при этом в старом варианте, когда браузер тянул 10 запросов и получал все иконки такой проблемы нет.

Название файла не меняется, почему происходит каждый раз запрос 304 и как можно решить проблему ?

6266a028e2e13667372512.png
6266a09c51418335821186.png
  • Вопрос задан
  • 428 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
ну так 304 - это и есть редирект на кэшированный ресурс. То есть указание браузеру, что он не изменился, и можно взять кешированный без повторной загрузки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы