Как заставить express всегда обслуживать индекс fre sh. html? - PullRequest
0 голосов
/ 30 апреля 2020

Итак, у меня есть загрузочное приложение 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'))
})
  1. Почему я вообще сталкиваюсь с этой проблемой? После каждой сборки index.html меняется, и ETAG должен меняться, потому что index.html отличается.
  2. Почему мое текущее решение не работает? Я заставляю там не быть кеша
  3. Как мне решить эту проблему? У меня есть пользователи с устаревшим индексом. html, и мне нужно кэшировать бюст.

Спасибо!

...