首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS浏览器缓存问题

AngularJS浏览器缓存问题
EN

Stack Overflow用户
提问于 2015-05-23 09:27:28
回答 5查看 40.9K关注 0票数 21

早上好,我在生产环境中有一个web应用程序。用户每天都在使用它,当我发布更新时,一个用户回到web应用程序时,他会查看web应用程序的旧版本。他需要刷新浏览器才能加载新版本。我该如何解决这个问题?每次发布更新时,我都不能告诉数百个用户刷新页面(每周3-4次)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-05-23 09:31:08

一个简单的解决方案是将表示时间戳或会话id的查询字符串添加到文件中。

例如,在我们的spring应用程序中,我们只使用:

代码语言:javascript
复制
<script src="js/angular/lib/app.js?r=<%= session.getId()%>"></script>

您也可以在服务器特定的实现中实现相同的解决方案。

票数 11
EN

Stack Overflow用户

发布于 2015-05-23 09:32:22

经典的缓存问题。除非另有规定(由the服务器告知),否则浏览器将根据文件名缓存资产。因此,当它看到相同名称的脚本/样式/图像时,它将304并提供缓存的版本。有几种方法可以解决这个问题,您可以:

配置tell服务器,告诉浏览器不要缓存该文件。这显然是低效的,因为用户将不得不一次又一次地下载相同的文件。

将查询字符串参数附加到文件名(如my-angular-code.js?x=123 )中,同样效率低下。

指纹你的资产。这一点在Rails的资产管道文档中有很好的解释。实现这一点有几种方法,也有咕噜任务吞咽任务可供使用。本质上,它是只在内容发生变化时才更改文件名的过程,迫使浏览器将其视为一个新文件。

票数 13
EN

Stack Overflow用户

发布于 2015-05-23 15:10:57

如果您使用的是HTML5,那么您可以使用应用缓存。它将自动检查更新,您可以提示用户刷新缓存。

下面是关于如何使用它的一些很好的教程:

应用程序缓存使用入门指南

使用应用程序缓存

让我们把这个离线 (离线web应用程序)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30411060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档