在浏览器中关闭页面?

时间:2010-07-08 02:33:06

标签: html servlets

我做了一个类似Twitter的网络应用程序。用户可以在查看彼此的页面时互相关注。以下是对正在发生的事情的高级描述:

  • UserA在www.mysite.com/UserA上查看他们自己的页面,该页面呈现他们正在关注的用户列表。
  • UserA导航至UserB的页面www.mysite.com/UserB。
  • UserA跟随UserB(通过ajax)。
  • UserA点击浏览器上的后退按钮,再次访问www.mysite.com/UserA查看他们自己的页面。
  • 看起来显示了页面的缓存版本,因为UserA的以下列表未显示。
  • 如果我点击了刷新按钮,则列表现在将是最新的。

那么有没有办法让浏览器中的页面到期,以便在按下后退按钮时拉出一个新的副本?理想情况下,只有当用户跟随​​另一个用户时我才能这样做,否则页面的缓存版本将是完美的。

我希望问题解释清楚,如果我能提供更多信息,请告诉我。我正在使用基于java / servlets的服务器(谷歌应用引擎)。

谢谢

2 个答案:

答案 0 :(得分:2)

您需要指示Web浏览器不要在历史记录中缓存页面,这样当您在历史记录中导航时,它会被迫向服务器发送一个全新的请求。在JSP / Servlet中,这可以通过将以下标题添加到您要禁用缓存的页面的响应来完成:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.

这可以在转发到JSP的Servlet或拦截JSP请求的Filter中完成。

另见:

答案 1 :(得分:1)

BalusC的回答听起来不错,但是页面中的脚本怎么做呢? (JQuery假设)

<script>
function updateFromServer()
{
    // ajax get update from server GO!
}

$(document).ready( function() {
    // on page load, get an update from the server
    updateFromServer() ;
}) ;

// also check for update from server every 2 sec
window.setInterval( 'updateFromServer();', 2000 ) ;
</script>