Установите номер версии в своем приложении и сохраните ее в локальном хранилище при посещении пользователем.
Когда приложение инициализировано, сравните версию локального хранилища с App.version
.
Если все по-другому, очистите локальное хранилище и выполните повторную визуализацию, перезагрузку, повторную инициализацию или что-то еще, что вам нужно сделать для вашего приложения.
Чтобы справиться с ситуацией, когда пользователь использовал ваше приложение, прежде чем реализовать это поведение, просто убедитесь, что он также очищает локальное хранилище, если он не может найти ключ версии в локальном хранилище.
Всего несколько примечаний, относящихся к комментариям.
У меня были проблемы в прошлом с местным хранилищем из-за разных событий. Часть 3 выходит за рамки вопроса, но стоит упомянуть о полноте.
Новый выпуск: исходный код приложения был изменен, а данные, хранящиеся в нем, структурированы по-разному. Возможно, теперь это JSON.stringified, например. Или, возможно, мы ожидали строку, и теперь мы получаем целое число, которое может сломать что-то со строгой проверкой типов.
Решается с использованием подхода, описанного выше. Приложение изменилось, поэтому приложение имеет новую версию и знает, что не может доверять данным, полученным из локального хранилища, для другой версии.
Проблема, которую вы описываете: данные на сервере обновлены, а локально сохраненная копия приложения устарела.
Как мы скажем приложению, что все изменилось? Периодически запрашивайте некоторый токен с сервера, возможно, временную метку, которую мы можем сравнить, чтобы увидеть, произошло ли изменение с момента последнего обращения к данным. This question рассказывает о различных способах этого.
Сам JavaScript изменился: у нас есть продуманная производственная сборка, и теперь есть новая, но у пользователя все еще есть старая сборка. Это проблема, когда сервер ожидает различные запросы к тому, что он теперь получит от новой сборки.
Простым решением здесь является привязка номера версии какого-либо типа к концу URL-адреса ресурса, так что браузер запрашивает application.min.js?v=2
вместо application.min.js?v=1
.
Спасибо @bcmcfc за ваши мысли. Извините, если я немного наивна, но как и когда вы предлагаете получить номер версии сервера? Или это то, что мы можем получить от каждого ответа сервера? – Anoop
Извиняюсь, я не думаю, что все это произошло, когда я впервые прочитал ваш вопрос. Я больше концентрировал внимание на стороне кеширования, чем на стороне изменения данных. Возможно, вам понадобится вызов AJAX для получения номера версии в первом экземпляре или, возможно, при каждой загрузке страницы? Отчасти это зависит от того, как часто изменяются данные и какова ваша бизнес-логика для того, как ее нужно обрабатывать. – bcmcfc
Возможно, вы можете сохранить сервер сервера timestamp lastUpdate, который периодически запрашивается с помощью приложения «Угловое». Если он был обновлен совсем недавно, чем копия приложения, протрите локальное хранилище и запросите новые данные. – bcmcfc