当前位置: 首页 > 面试题库 >

检测单个页面应用程序上的应用程序版本更改

令狐辉
2023-03-14
问题内容

今天在这里提出了一个问题,我没有明显的答案。

假设我们串联并缩小所有资源文件(CSS和Javascript),并在“母版页”中声明它们。

在多页应用程序上,如果CSS文件发生更改,它将在下一次整页加载时重新充电。

在单页应用程序上,用户可以继续工作数天,并且永远不会为声明CSS文件的主页充值。在发出Ctrl-F5之前,用户永远看不到更改。

我确定有人已经想到了这一点,并且有经验可以分享:)

对我来说,使用WebSockets不是一种选择。首先是因为它过于严格,其次是因为并非我的所有客户都支持该技术。相同的原因也适用于所有WebSocket的后备…因此,我不会继续打我的服务器

那么,有人有什么想法吗?:)

顺便说一句,我们正在使用AngularJS,如果这可以帮助特定的解决方案。

谢谢!


问题答案:

我已经解决了同样的问题。我的解决方案有针对性,可能无法满足您的要求:

当我打包前端应用程序和服务器应用程序时,我共享一个包含前端应用程序当前版本的配置文件。

前端:我的路由更改中有75%隐式调用Web服务(路由更改解决)。因此,每次调用服务器时,我都会包含一个自定义HTTP标头(或GET /
POST参数),其中包含前端应用程序的客户端版本。

服务器端:我将前端应用程序版本(用户浏览器中的版本,上次用户刷新/加载SPA时加载)与共享配置文件的前端应用程序版本进行比较:

  • 如果版本匹配:我什么也不做。
  • 如果版本不匹配,我会发送自定义HTTP状态错误代码(例如418)

然后是前端:我添加了一个响应拦截器,该拦截器拦截任何418错误代码并强制刷新整个应用程序

而已。基本上,“检查”前端应用程序版本是否最新的事件是路由更改(通过ajax调用WS)。但是您可以添加一些无限的$
interval,每5分钟左右调用一个专用WS …如果需要,我可以添加一些代码。

希望这可以帮助 ;)



 类似资料:
  • 因此,我们正在构建一个进步的web应用程序,当然,我们正在使用令人敬畏的服务人员。 每当我们发布新版本的应用程序时,我们都会更新软件中的版本号。js文件。页面加载时,浏览器会检测到sw。js已更改并触发“安装”和“激活”事件,这反过来会缓存适当的资源以供脱机使用。 这工作很棒。但是从我的理解来看,它只会在页面加载时被触发。因此,如果用户将应用程序添加到他们的主屏幕上,并且总是使用此快捷方式访问应用

  • 我们有一个信号页面应用程序,该应用程序已安装并处于活动状态。 现在我们的服务器重建应用程序,服务工作者文件正在服务器端更新。 我们的客户不知道这个新的服务人员文件,它仍然在使用旧的服务人员文件。 当它工作?如果我刷新/重新加载应用程序,新的服务工作人员正在安装。 如果服务器上的服务工作者文件正在更新,而客户端没有重新加载,我们如何刷新客户端? 可能的解决方案:我想,我需要在1小时后或其他时间进行投

  • null 警告:与依赖项“com.android.support:support-annotations”冲突。应用程序(22.0.0)和测试应用程序(21.0.3)的解析版本不同。 Gradle本身更宽容,但Android工作室,就没那么宽容了。 我没有用21.0.3声明的依赖项...是不是其中一个依赖库使用21.0.3而谷歌忘了用批处理的其余部分更新它? null null null

  • 问题内容: 在完全基于服务器端的呈现(非Web 2.0)中,部署服务器端代码将在页面重新加载时直接更新客户端页面。相比之下,在基于React的Single Page Application中,即使在更新React组件之后,仍然会有一些客户端使用这些组件的旧版本(它们仅在重新加载浏览器时才获得新版本,这种情况很少发生)->如果页面如果是完全SPA,则某些客户端可能会在几个小时后才刷新页面。 应采用什

  • 在完全基于服务器端的呈现(非Web 2.0)中,部署服务器端代码将在页面重新加载时直接更新客户端页面。相反,在基于React的单页应用程序中,即使在React组件更新后,仍然会有一些客户机使用旧版本的组件(他们只在浏览器重新加载时获得新版本,这应该很少发生)->如果页面是完全SPA,一些客户机可能在几个小时后才刷新页面。 应该使用什么技术来确保旧的组件版本不再被任何客户使用?

  • 我目前正在使用silex 1.3创建一个应用程序。 我想使用dflydev原则orm服务提供者。 对于这个服务提供商来说,这是一个小疙瘩 我试图通过作曲家安装一个较新的版本,但这会导致一个错误: 无法将您的需求解析为可安装的软件包集。 问题1-silex/silex v1。3.0需要粉刺/粉刺~1.0- 所以我的问题是:如何更新这个粉刺版本? 编辑:我刚刚看到有一个较旧版本的dflydev orm