как я могу сказать своему приложению, что "эй, это новая сборка"? так что если происходит refre sh F5, он загружает все и не использует кэшированные файлы
, конечно, вы можете
в надежде изменить имя чанка как-то так main.bad98a53.chunk_v0.1.j
без необходимости
Как вы можете уведомить об изменениях на сайте?
сначала вы должны использовать [contenthash]
для имени чанка в веб-пакете, и когда вы публикуете sh новую версию, contenthash
изменится, если содержимое чанка изменилось.
секунду, используйте fetch для получения текстового содержимого HTML, которое содержит сценарии и сравнить его с предыдущим, как строка. Текст будет выглядеть так:
"
<html>
//...
<script src="main.11bsfas21.js"></script>
</html>
"
// after publish
"
<html>
//...
<script src="main.aagssh.js"></script>
</html>
"
если есть разница, выполните location.reload(true)
код будет выглядеть так:
let previous;
let htmlContent;
const diff = (callback) => {
if (!previous) {
previous = htmlContent;
return
}
if (previous === htmlContent) return
callback()
}
const loadContent = async () => {
// get the html content
const content = await window.fetch(location.host).then(res => res.text())
return content
}
setTimeout(() => {
loadContent()
.then(content => {
htmlContent = content;
diff(() => location.reload(true))
})
}, 1000)
это просто пример, вы Можно настроить обратный вызов, как показать компонент модели. Основная работа сравнивает текст HTML, если contenthash
изменится, текст HTML не будет равен и вызовет обратный вызов.
use location.reload(true)
, что заставит веб-сайт использовать последний источник, а не использовать ресурсы кэша.