我有一个Java/Wicket页面,它生成一个JNLP文件,用于启动我公司的软件.该类将可选地获取一些url参数并将它们作为参数嵌入JNLP中.当用户启动此JNLP文件时,客户端应用程序将根据这些参数执行某些功能.如果客户端软件已在计算机上运行,则点击JNLP页面将尝试通过远程调用向正在运行的客户端提供这些参数,而不是启动新页面.
这部分是我遇到问题的地方.在IE,Firefox和Chrome上,我可以打开一个新的客户端,但尝试再次访问相同的URL将返回一个JNLP文件.我发现清除浏览器缓存会在所有浏览器上修复此问题.另外,我似乎无法击中断点在JNLP类,它强制我的直觉,这是更大的问题比怪东西检票请求.
我将以下代码放在我的页面类中,该类扩展了org.apache.wicket.markup.html.WebPage:
@Override
protected void setHeaders(WebResponse response) {
getPageMap().remove(this);
HttpServletResponse httpServletResponse = response.getHttpServletResponse();
if (httpServletResponse != null) {
httpServletResponse.setDateHeader("Expires", 0);
httpServletResponse.addHeader("Cache-Control", "no-cache,no-store,private,must-revalidate,max-stale=0,post-check=0,pre-check=0");
httpServletResponse.addHeader("Keep-Alive", "timeout=3, max=993");
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,因为Firefox 3.6似乎仍然缓存结果.IE 7将工作,但只有在尝试我创建几次链接后.我不太了解Web开发和Wicket,这对我来说是新的,所以我可能会遗漏一些简单的东西.
TL; DR:如何让Wicket页面不在客户端浏览器上缓存?