我有一个在AngularJS中开发的网站,index.html服务于应用程序的根目录。
所有JS和CSS版本都在index.html中维护,这意味着任何更改都会反映给用户,“index.html”将在浏览器中重新加载。(如果我错了,请纠正我。 )。 这是一个问题,因为用户可能有机会在他的浏览器中打开我们网站的标签,并且我们已经发布了新版本。在未触发“手动刷新”并且未重新加载“index.html”的情况下,此版本将不会在用户的浏览器上发布,从而提示用户不会使用我们的最新版本。
我们已经编写了一个框架,可以在检测到版本后通过从Web服务器发送最新版本并将其与浏览器中的当前版本进行比较来重新加载所有资源,并自动触发重新加载。此修复工作正常,但问题是,如何首次将此版本发布到所有用户的浏览器?
我希望你能解决我的问题?让我知道。
答案 0 :(得分:1)
这是不可能的。如果没有代码来实现该功能,则无法强制打开页面进行刷新。您必须等到用户自己刷新,和浏览器缓存过期,以及用户和服务器之间的任何中间缓存。
我建议您搜索以了解" HTTP缓存"如果你还不熟悉,还有#34;缓存破坏。"一般情况下,您可能需要考虑将index.html
作为引用<script>
标记中的大文件的小文件,将index.html
的缓存控制设置得非常低,并使用缓存清除技术大文件。
但是对于您的第一个版本,无法使打开的选项卡或现有缓存无效。如果这会导致您的服务器出现问题,请阅读&#34; API版本控制&#34;用于处理它的不同方法。
答案 1 :(得分:0)
如果我正确理解您的问题,那么您想要在服务器上更改代码时重新加载页面。
我也有这样的情况(不完全像这样,但是这样的事情),我必须检查用户是否登录到他的帐户然后让他登录,但同时如果他从其他地方登录,即使用其他浏览器或不同的标签或地球上的任何地方,他必须从他登录的第一个地方退出。
所以我在服务器上创建了一个服务,当用户第一次登录时,我创建了一个带有unique id
的会话并返回unique id
到前端(如果用户从其他地方登录,那么替换这个{{ 1}}使用新创建的一个),然后使用unique id
如果服务器timeout
和我的unique id
都相同,我每隔20秒就用unique id
ping服务器一次让他登录,否则我会将他重定向到登录页面。
现在您可以针对您的问题使用相同的逻辑。您可以创建一些变量,并可以检查您是否更新了代码,而不是将其重定向到登录页面 使用这个
unique id
希望它对你有用。 :)