小编Sco*_*ria的帖子

Java/Wicket - 如何阻止浏览器缓存页面?

我有一个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页面不在客户端浏览器上缓存?

java wicket

7
推荐指数
1
解决办法
6862
查看次数

标签 统计

java ×1

wicket ×1