Как очистить кеш браузера при запуске обновленной версии приложения? - PullRequest
0 голосов
/ 12 апреля 2019

Я развертываю свое приложение пользовательского интерфейса, которое состоит из AngularJS, Grunt и других вещей пользовательского интерфейса.

Всякий раз, когда я обновляю свой пользовательский интерфейс и повторно использую его с помощью apache-tomcat, браузер всегда получает мои ресурсы из кеша.(Так как пути к новым ресурсам, таким как css, html одинаковы)

Пользователь должен выполнить CTRL + F5 (Hard Reload), чтобы очистить кэш и использовать новые ресурсы.

Как можноя заставляю браузер очищать кеш при повторном развертывании приложения?

Если каким-то образом я могу использовать angular + grunt для выполнения этой задачи, то это тоже хорошо.

Я не хочуобновлять версии моих файлов каждый раз, когда я повторно внедряю продукт.Поскольку мои файлы загружаются изнутри, многие HTML-файлы также.

Так или иначе, я хочу очистить только кеш браузера.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Вы не можете обновить кеш без версии имен файлов. Но вам не нужно делать это вручную. Если вы используете Grunt, просто посмотрите пакеты npm. Как этот, например: https://www.npmjs.com/package/grunt-cache-breaker

При перестройке он создаст новые хэши для ваших активов и вставит их в ваши HTML-файлы. Поэтому, когда ваши пользователи будут загружать ваши html-файлы (они загружаются, они не кэшируются), эти html-файлы будут содержать ресурсы, такие как css и js с новыми именами, поэтому браузер принудительно загрузит вместо того, чтобы извлекать эти файлы из памяти.

0 голосов
/ 12 апреля 2019

Вы можете добавить версию в свои HTML-файлы

app.factory('preventTemplateCache', function () {
    return {
        'request': function (config) {
            if (config.url.indexOf('partials') !== -1) {
                config.url = config.url + '?t=' + 101;
            }
            return config;
        }
    }
})

, а также дать версию файлам .js как

 <script src='app.js?v=101'></script>

101 - номер версии

...