Как добавить заголовки ответов для элемента управления кешем в index.html и статические пакеты JS, созданные Webpack в приложении Springboot? - PullRequest
0 голосов
/ 11 мая 2019

По сути, у меня есть приложение springboot, которое обслуживает мои index.html и другие статические JS-файлы, которые включают в себя (время выполнения, поставщик, основной) чанки, созданные во время производственной сборки Webpack.Как настроить параметры управления кэшированием для index.html и чанков отдельно, чтобы index.html не кэшировался, а чанки кэшировались на стороне клиента?В настоящее время мои ресурсы находятся в папке static, например:

├── static
│   ├── index.html
|   |-- bundles
│   │   ├── main.js
│   │   ├── vendors.js
│   │   ├── runtime.js

`По сути, я стремлюсь к долгосрочному кэшированию статических активов на стороне клиента.

1 Ответ

0 голосов
/ 11 мая 2019

Я интерпретирую ваш вопрос как вопрос, как вы можете контролировать это весной.

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

В документации по кэшированию Webpack рекомендуется выводить разные имена файлов чанков, включая contenthash.

output: {
    path: path.join(__dirname, "build"),
    filename: "bundle.[contenthash].js",
  }

Это назовет ваш текущий bundle.js чем-то вроде bundle.7b4c86b268840bec8c4d.js. Когда браузер в первый раз посещает ваш сайт, он будет долго сохранять кэш, обычно в течение года, но это зависит от вашей конфигурации.

Когда вы вносите изменения в любой код, входящий в bundle.[contenthash].js, значение contenthash изменится, и браузер будет кэшировать эту новую версию вашего сайта / пакета, так как имя файла больше не совпадает с именем файла кэшированного пакета. .

Дополнительную информацию см. В вышеупомянутой документации по кэшированию в веб-пакете

...