Управление версией JavaScript: управление версиями от FE

СКЭНАРИО:

Я пытаюсь придумать способ управления версиями в JS, который выполняет два предположения:

  • Кэш-накрест
  • Немного (или нет в идеале) вызовов Backend

Поэтому я придумал эту схему:

Мне нужно, чтобы FE перезагружал содержимое каждый раз, когда появилась новая версия, поэтому простой способ достичь этого - добавить тег версии в ссылку src:

<script type="text/javascript" src="myfile.js?15.6.0"></script>

Я могу добавить некоторые шаблоны, поэтому номер версии можно определить в другом месте, например:

<script type="text/javascript" src="myfile.js?$$RELEASE_ID$$"></script> 

ПРОБЛЕМА:

Мне нужно будет вызвать Backend, чтобы узнать последнюю версию (и Backend будет читать ее из файла pom.xml, возвращая ее позже)

ВОПРОС:

Можно ли использовать какой-либо способ, чтобы Front End знал, что такое последняя версия?

Спасибо.

Ответ 1

Я бы использовал buildnumber-maven-plugin для создания тега версии, например. git хэш. И вставьте его где-нибудь в военный файл. Либо

  • Это файл на стороне сервера, например. web.xml, где вы можете определить переменную контекста для доступа в вашем Java-коде или
  • Файл HTML/JS для браузера.

См. https://github.com/renfeng/event-manager/blob/master/pom.xml#L130-L155

Ответ 2

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

Если вы обычно выпускаете версию BE каждый день, она делает так, чтобы каждый опрос сервера каждые 12, 6, 4 или любое количество часов вам нужно. Все зависит от того, насколько важно обновить файл.

Было сказано, что в большинстве случаев при обновлении версии файла на задней панели после обновления страницы (что может произойти через несколько часов) сервер отправит новую версию файла, если не будет настроена другая стратегия кэширования сервера.