0

如何使客户端的浏览器使用新的 Java 小程序加载新版本的 html 页面?

我们在现场更新了一个系统,但是当客户端连接到 Web 服务器时,仍然显示旧的 Java 小程序(来自缓存)。

如何强制(最好从服务器端)客户端加载新版本,而不是从它的缓存中加载新版本?

旧系统(升级前):

  • 老linux版本(10年以上)
  • 旧的 apache 网络服务器(超过 10 年)
  • 旧的java小程序(单独的类文件)(大约2岁)
  • 网络服务器根目录中的旧 index.html(大约 2 岁)

新系统(升级后):

  • 与旧系统相同的 IP 地址和端口
  • windows xp 嵌入式
  • apache/2.2.21 (win32) 网络服务器
  • jar 文件中的新 Java 小程序(与旧版本不同的类名)
  • 网络服务器根目录中的新 index.html

用户在 Windows XP 机器上使用 Chrome

当用户在 Firefox 中加载页面时,新的 java 小程序显示出来并且可以完美运行。(他从来没有在 Firefox 中加载过旧的 java 小程序)

[编辑]

将 looper 中的行添加到我的 httpd.conf 并没有导致任何错误,但我不确定它是否有效......

我似乎无法重现我的客户端的缓存问题:当我在小程序中更改某些内容并从另一台计算机再次加载它时,没有任何变化,但是当我在几分钟后重新加载时,它确实显示新版本 .. 没有或没有那些带有 CacheDisable 的额外行

当我在 httpd.conf 中搜索“缓存”时,我发现的只是:

#LoadModule cache_module modules/mod_cache.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so

所以似乎没有启用缓存?

当我自己添加带有 CacheDisable 的行(没有 IfModule)时,Apache 不想启动,所以它可能会损坏 httpd.conf ?

[编辑2]

由于服务器操作系统、web服务器、java类名以及除index.html之外的所有文件名都与旧版本不同,因此问题的原因一定是缓存的index.html。我将 FrancescoMM 的回答中的元标记添加到我的 index.html 中,希望这能防止未来版本出现问题

4

3 回答 3

1

除非您放置允许小程序根据服务器指令使自己无效的功能,否则您必须从客户端进行重置。根据提供的信息,应该清除浏览器上的缓存。每个浏览器都有一种清除缓存的方法。我不相信有比这更短的方法。

每个系统在首次部署时都会变成遗留系统。计划升级总是一个好主意。至少,任何进行服务器通信的小程序都应该向服务器报告其版本号,使服务器能够拒绝服务、开始升级、通知用户或任何其他适当的事情。

于 2012-11-23T15:34:38.913 回答
1

如果 java 类不同,那么索引文件就是缓存中的那个。它也可能是客户端代理缓存,因此对服务器进行操作没有结果。

最快的解决方案是向客户端发送一个新的 url:

http://www.site.com/index.html?random_param=1234
http://www.site.com/?random=1234
http://www.site.com/?1234
http://www.site.com/?new

甚至只是

http://www.site.com/?

应该足够了。

编辑

此外,您是否尝试将所有 pragma no cache 和到期日期元标记添加到 HTML 页面?这应该告诉客户端代理重新加载页面。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">

请注意,EXPIRES 故意设置为旧日期。这一次可能不能解决你的问题,好像新索引没有加载,没有人(服务器、代理、客户端)会看到新标签,但会确保下次每次加载页面。

于 2012-11-28T14:00:15.010 回答
0

只需在 httpd.conf 中强制 Apache 中的 no-cache 即可。

来自 apache 文档:

<IfModule mod_cache.c>
    CacheDisable /local_files
</IfModule> 

您可以指定小程序文件的完整路径,而不是禁用所有本地文件的缓存。

于 2012-11-22T14:25:43.663 回答