【问题标题】:Changes made in js file or views file or css file doesn't gets reflected for the user在 js 文件或视图文件或 css 文件中所做的更改不会反映给用户
【发布时间】:2019-11-10 12:00:38
【问题描述】:

我开发了一个带有多个视图的单页 Web 应用程序。为了渲染这些视图,使用了ng-if

每个视图都有一个单独的控制器。许多点击功能已使用 Jquery 处理。对于后端,已使用 java。整个应用程序已在spring MVC 开发并部署在WebLogic

问题是,每当我对视图或 js 文件进行任何更改时,在部署新的 WAR 文件而不清除缓存并执行硬刷新(ctrl+F5/R) 后,它不会得到反映。

几分钟前我得到了这个问题的答案,它与 ServiceWorker 和 appCache 有关,但答案列表中不再有。 有人对此有任何想法吗?

我需要一个永久的解决方案,因为我有多个 5000 用户,我不能要求每个人在每次部署后都这样做。

我已尝试在将其包含在 index.jsp(如 (filename.js?version=2.1))中时提供一个版本。但这似乎对我不起作用。我没有在chrome 或任何其他浏览器上测试过这个,因为只有IE10edge 可供我和用户使用。

【问题讨论】:

标签: spring-mvc weblogic service-worker html5-appcache


【解决方案1】:

在导入的 JS 文件末尾添加查询仅适用于客户端语言。
如果您使用的是 JSP 文件,您可以在文件开头添加它,它将禁用缓存

<%
response.setHeader("Cache-Control","no-cache"); 
response.setHeader("Pragma","no-cache"); 
response.setDateHeader("Expires", -1);
%>

对于 IE,您需要添加这些 HTML 标签:

<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="Expires" CONTENT="-1">

您可以在response.setDateHeader("Expires", -1);中指定文件的到期日期
请参阅this 了解更多信息

【讨论】:

  • 正如您所建议的那样,它会禁用缓存,但会减慢应用程序的速度,因为它每次都会下载包含的文件。不是吗?
  • 是的,但是在 setDateHeader 中您可以指定到期日期。请参阅docs.oracle.com/cd/E13158_01/alui/wci/docs103/devguide/… 了解更多信息
猜你喜欢
  • 2011-04-20
  • 2022-01-11
  • 2017-01-01
  • 2013-02-07
  • 1970-01-01
  • 2017-11-12
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多