Проблемы с кешем i18n json при использовании nginx
Я использую angular с i18n-переводами в json-файлах, таких как de.json и en.json. В моей производственной среде (nginx) у меня проблема в том, что эти JSON-файлы кэшируются веб-браузером. После обновления Chrome не будет загружать новую версию текущего файла JSON, даже если заголовок даты изменился.
Запрос информации (Chrome):
- URL запроса: https://%5Bmy-site%5D/assets/i18n/de.json
- Метод запроса: GET
- Код состояния: 200 (из дискового кэша)
- Удаленный адрес: XXXX:443
- Политика реферера: no-referer-when-downgrade
Заголовки ответа:
- контент-кодировка: gzip
- Тип контента: приложение / JSON
- дата: пт, 15 февраля 2019 09:04:42 GMT
- etag: W / "5c62bf4d-2aea"
- Последнее изменение: вторник, 12 февраля 2019 г., 12:42:53 по Гринвичу
- сервер: nginx/1.14.0 (Ubuntu)
- статус: 304
Кто-нибудь имеет опыт решения этой проблемы и может мне помочь?
1 ответ
Не совсем исправление для Angular/nginx, но я часто использую практику, чтобы добавить параметр строки запроса к ресурсу при его загрузке. Для меня это обычно происходит из номера версии файла / приложения.js, например, используя его в качестве начального числа для ГСЧ
Итак, вместо: <script src="/assets/de.json" />
использование <script src="/assets/de.json?_=12345" />
Бонусные баллы - в вашем приложении Angular вы можете отслеживать, какую версию активов вы хотите включить, а это означает, что вы можете выпускать новые файлы активов без необходимости немедленного обновления клиентами, если они есть в локальном кэше (хотя учтите, что новые клиенты получат новую версию независимо от)