Итак, у меня есть загрузочное приложение create-реагировать на приложение, которое обслуживается express. Я заметил, что для некоторых моих пользователей их браузер кэширует индекс. html, и в результате мое приложение отправляет запросы на несуществующие активы js и css.
Чтобы этого не произошло, я попытался установить заголовок элемента управления кэшем на сервере express stati c как «без кеша» .. что не сработало. Я также пытался заставить ETAG быть ложным, поэтому браузер вынужден возвращать новый индекс. html, но это тоже не сработало.
Так я подаю свое заявление
app.get('/*', forceHttps)
// root (/) should always serve our server rendered page
// other static resources should be served as they are
const root = path.resolve(__dirname, '..', 'build')
app.use(
express.static(root, {
maxAge: '1d',
etag: false,
setHeaders: (res, requestedFilePath) => {
if (requestedFilePath.endsWith('.html')) {
res.setHeader('Cache-Control', 'no-cache')
}
},
})
)
app.get('/*', function(request, res, next) {
res.sendFile(path.join(__dirname, '..', 'build', 'index.html'))
})
- Почему я вообще сталкиваюсь с этой проблемой? После каждой сборки
index.html
меняется, и ETAG должен меняться, потому что index.html
отличается. - Почему мое текущее решение не работает? Я заставляю там не быть кеша
- Как мне решить эту проблему? У меня есть пользователи с устаревшим индексом. html, и мне нужно кэшировать бюст.
Спасибо!