Я только что закончил реализацию решения этой проблемы.
Я пробовал несколько разных подходов, но в итоге поддерживал отдельный json-файл, который приложение может запрашивать с заданным интервалом и сравнивать с текущей загруженной версией, а затем действовать соответствующим образом.
Я также играл с sw-precache от google и несколькими другими вещами, которые, как я надеялся, просто заставят проблему уйти. SW-Precache Это выглядит потрясающе, но не очень надежно решает нашу проблему, так как я не мог найти способ запланировать регулярные проверки на недействительность рассматриваемого кеша.
Gotcha номер 1: Добавить новый файл в блок активов в angular-cli.json, чтобы он был скопирован в папку распространения и не был включен в встроенный файл js, так как это отрицало бы всю точку что мы пытаемся сделать.
"assets": [
"assets",
"favicon.ico",
"web.config",
"version.json"
],
Тогда я просто создал простой сервис с функцией, чтобы запросить этот файл, а другие, чтобы установить и интервал повторно вызвать запрос. Я также решил использовать «жесткий» кеш-код для этих запросов, включив временную метку unix в качестве параметра запроса. Это может быть старая школа, но она гарантирует, что независимо от того, где и где это настроено, вы не получите кешированную версию файла version.json.
Наконец-то я бы порекомендовал некоторый способ сохранить этот файл version.json в строке с номером версии вашего приложения. Быстрый поиск привел меня
Versiony on NPM
, который после того, как НПМ установки позволяет очень простые модификации семантических номера версий. Я добавил несколько сценариев в свой пакет package.json, чтобы автоматизировать, чтобы убедиться, что version.json находится в соответствии с пакетом. Json перед сборкой, чтобы убедиться, что нет hickups, потому что код изменился, но в версии нет.
Я обнаружил, что это проблема, даже когда приложение не запущено, и пользователь позже открывает свой браузер на странице запуска приложения. Браузер просто отображает кешированную версию страницы и использует кешированную версию всех скриптов. –