В настоящее время мы используем Webpack с HtmlWebpackPlugin для создания наших сборок javascript для нашей веб-страницы.
new HtmlPlugin({
template: 'www/index-template.html', //source path - relative to project root
filename: 'index.html', //output path - relative to outpath above
hash: true,
cache: true //only emit new bundle if changed
}),
Это приводит к добавлению хэша в строку запроса связанного файла javascript.
<script type="text/javascript" src="/build/vendor.min.js?4aacccd01b71c61e598c"></script><script type="text/javascript" src="/build/client.min.js?4aacccd01b71c61e598c"></script>
При использовании любого стандартного десктопного или мобильного браузера новые сборки корректно очищаются от кеша, и новая версия сайта загружается без каких-либо усилий со стороны пользователя. Однако у нас также есть реализация веб-приложения Chrome, в которой мы вызываем:
chrome.exe --app=http://localhost:65000 --disable-extensions
В этом приложении по какой-то причине хэш в конце сборки javascript не разрушает кеш. Мы должны вручную щелкнуть правой кнопкой мыши где-нибудь на странице, затем нажать «Перезагрузить» (или нажать F5). По какой-то причине кеш не разбивается в веб-приложении.
Я думал, что, возможно, это кэширует файл index.html? Это может привести к тому, что приложение никогда не получит обновленный хэш сборки. Я не уверен, как решить эту проблему, хотя, если это так.
Я также заметил, что если наш локальный сервер не работает, страница по-прежнему загружается, как если бы сервер работал. Это указывает мне на какой-то автономный кеш. Я проверил параметры manifest.json и не могу найти ничего, что могло бы заставить перезагрузка.
Я также пробовал эти переключатели командной строки Chrome, которые тоже не помогли: --disk-cache-size=0, --aggressive-cache-discard, --disable-offline-auto-reload.
Еще одно предостережение заключается в том, что нам нужно сохранить данные localStorage и их файлы cookie. В стандартном окне браузера или в любом другом браузере он работает нормально, но не в веб-приложении Chrome.