【问题标题】:How to reload "index.html" in angularJS without manual intervention?如何在没有人工干预的情况下在 angularJS 中重新加载“index.html”?
【发布时间】:2017-07-07 23:14:26
【问题描述】:

我有一个用 AngularJS 开发的网站,index.html 是应用程序的根目录。

所有的 JS 和 CSS 版本都维护在 index.html 本身中,这意味着任何更改都会反映给用户,“index.html”将在浏览器中重新加载。(如果我在这里错了,请纠正我)。 这是一个问题,因为用户可能会在他的浏览器中打开我们网站的标签,并且我们已经发布了新版本。在没有触发“手动刷新”并且没有重新加载“index.html”之前,此版本不会在用户的浏览器上发布,因此可能会导致用户不会使用我们的最新版本。

我们编写了一个框架,通过从网络服务器发送最新版本并将其与浏览器中的当前版本进行比较并自动触发重新加载,检测到发布后重新加载所有资源。此修复工作正常,但问题再次是,如何首次发布此版本到所有用户的浏览器?

我希望你能解决我的问题?否则让我知道。

【问题讨论】:

  • 如果您的客户在浏览器中一直打开网站,如果您事先没有实施一些措施来处理这种情况,则无法控制它的作用。告诉他们刷新页面,让你的框架在下次资源发生变化时处理它。
  • @Omri Luzon:感谢您的更新。这绝对是我最后的选择,只是想看看是否有可能处理这个问题?顺便说一句,我使用 Nginx 作为我的网络服务器。有什么可以在 Nginx 上配置来实现这一点的吗?
  • 我所知道的不是一般的东西,看起来它应该是特定于您的应用程序的东西。

标签: angularjs


【解决方案1】:

这是不可能的。如果还没有实现该功能的代码,则无法强制刷新打开的页面。您将不得不等到用户自己刷新它,并且浏览器缓存过期,以及用户和您的服务器之间的任何中间缓存。

如果您还不熟悉,我建议您搜索以了解“HTTP 缓存”以及“缓存破坏”。一般来说,您可能需要考虑将index.html 设为一个小文件,在<script> 标记中引用您的大文件,将index.html 的缓存控制设置得非常低,并对您的大文件使用缓存清除技术。

但是对于您的第一个版本,没有办法使打开的选项卡或现有缓存无效。如果这会导致您的服务器出现问题,请阅读“API 版本控制”以了解处理它的不同方法。

【讨论】:

    猜你喜欢
    • 2012-01-20
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2015-10-13
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多