我正在将Java 1.6 applet迁移到Java 1.7.我们的一个小程序定期点击URL以检索动态状态值:
https://host/myapp/path/to/status
然后根据最新状态值进行更新.自升级到Java 1.7以来,我的客户端不会检索最新的状态值.我在Java控制台中看到这样的条目:
CacheEntry[https://host/myapp/path/to/status]: updateAvailable=true,lastModified=Wed Dec 31 17:00:00 MST 1969,length=82
看起来客户端具有该URL的一些缓存值,并且实际上并未从服务器检索最新的动态值.
这作为1.6 applet工作得很好,并且作为1.7独立的Java应用程序也可以正常工作.如何作为1.7 applet运行时如何禁用或绕过此缓存行为?
解决方法:
我已通过在服务器响应中使用以下HTTP标头解决了此问题:
Cache-Control: no-cache, no-store, no-transform
现在,我的Java 1.7 applet每次都从服务器获取数据.显然,Oracle改变了applet如何响应Java 1.7中的这些头文件.以前(当我们使用Java 1.6 applet时),我们有以下标题:
Cache-Control: no-cache
这在Java 1.6中有效,但在1.7中没有.