3

我在 de.json 和 en.json 等 json 文件中使用 angular 和 i18n 翻译。在我的生产环境(nginx)中,我遇到了这些 JSON 文件被 Web 浏览器缓存的问题。升级后,即使日期标头已更改,Chrome 也不会下载当前 json 文件的新版本。

请求信息(Chrome):

响应标头:

  • 内容编码:gzip
  • 内容类型:应用程序/json
  • 日期:格林威治标准时间 2019 年 2 月 15 日星期五 09:04:42
  • etag:W/“5c62bf4d-2aea”
  • 最后修改时间:格林威治标准时间 2019 年 2 月 12 日星期二 12:42:53
  • 服务器:nginx/1.14.0 (Ubuntu)
  • 状态:304

有没有人有这个问题的经验并且可以帮助我?

4

1 回答 1

1

不是专门针对 Angular/nginx 的修复,但我经常使用的一种做法是在加载资源时将查询字符串参数附加到资源。对我来说,这通常来自 .js 文件/应用程序的版本号,例如将其用作 RNG 的种子

所以,而不是:<script src="/assets/de.json" />

利用 <script src="/assets/de.json?_=12345" />

加分项——在您的 Angular 应用程序中,您可以跟踪要包含的资产版本,这意味着您可以发布新资产文件,而无需让客户端在本地缓存中立即更新它们(尽管请注意无论如何,新客户都将获得新版本)

于 2019-02-18T04:56:26.647 回答