【问题标题】:How to update my Web App (chrome, mozilla, IE8+) changes without pressing ctrl+F5?如何在不按 ctrl+F5 的情况下更新我的 Web 应用程序(chrome、mozilla、IE8+)更改?
【发布时间】:2013-12-13 16:40:25
【问题描述】:

例如,当我进入我的 Gmail 帐户时,我每隔一段时间就会看到更改,并且这些更改在不使用 ctrl+f5 更新(没有缓存数据)的情况下是有效的,而我的网络应用程序会发生相反的情况,用户必须按下ctrl+f5 查看变化。

如何在无需清除缓存或更新的情况下实现与其他网络应用程序相同的更改。

这个问题不在于数据,而在于 html 内容。我根据 AngularJS 路由使用 requireJS 加载每个部分(js、css 和 html),例如,如果我调用 index.php#/users/edit 我加载 users/edit.html 等等,所以当我进行更改或添加一个 HTML/CSS/JS 文件即使按 f5 更改也不可见,用户需要删除缓存或按 ctrl+f5

【问题讨论】:

  • 您是在询问资源、HTTP 缓存标头或 AJAX / WebSockets 的缓存破坏 URL 吗?
  • 我刚刚在解释中添加了对您问题的回复。
  • 有点混乱。你想要push/self update service 之类的东西(即Gmail、Facebook 等)吗?
  • 然后您询问的是 HTTP 缓存标头或缓存破坏器 URL。见维基百科
  • @SLaks 让我了解 HTTP 缓存标头,问题是我仅使用 index.html 作为主布局 (SPA),而布局的其他部分正在作为外部文件加载( html/css/js) 所以我认为我应该在 index.html 中设置这个标题?这是通过元标记实现的吗?

标签: javascript google-chrome caching browser-cache


【解决方案1】:

假设我正确理解了您的问题,我通常会在用于获取页面内容的 URL 中附加一个“版本”参数。

因此,您可以请求users/edit.html?v=123,而不是调用users/edit.html

您可以将版本保存在一个专用变量中,您可以手动或在构建时设置该变量。

如果您想完全忽略缓存,可以使用 Math.random() 之类的东西附加一个随机值

【讨论】:

  • 这意味着什么?是不是当我在 URL 上使用不同的参数值时,它会在不清除缓存的情况下加载新的内容更改?
  • 是的,这就是它应该的工作方式。它会“欺骗”浏览器认为您正在请求另一个页面
猜你喜欢
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2020-02-01
  • 2021-11-15
  • 1970-01-01
相关资源
最近更新 更多