开发者

Expiring a page in the browser?

开发者 https://www.devze.com 2023-01-06 20:28 出处:网络
I\'ve made a twitter-like web app. Users can follow one another when viewing eachother\'s pages. Here\'s a high-leve开发者_Python百科l description of what\'s happening:

I've made a twitter-like web app. Users can follow one another when viewing eachother's pages. Here's a high-leve开发者_Python百科l description of what's happening:

  • UserA views their own page at www.mysite.com/UserA, which renders a list of users they're following.
  • UserA navigates to UserB's page at www.mysite.com/UserB.
  • UserA follows UserB (via ajax).
  • UserA hits the back button on the browser, to go see their own page again at www.mysite.com/UserA.
  • It looks like a cached version of the page is shown, because the list of UserA's followings is not being shown.
  • If I hit the refresh button, the listing will now be current.

So is there a way to expire the page in the browser, so that it pulls a fresh copy when hitting the back button? Ideally I could do this only if the user had followed another user, otherwise a cached version of the page would be perfect.

I hope the problem is explained clearly enough, please let me know if I can supply more information. I am using a java/servlets based server (google app engine).

Thank you


You need to instruct the webbrowser to not cache the pages in the history so that it's forced to fire a brand new request to the server when you navigate back in the history. In JSP/Servlet this can be done by adding the following headers to the response of the page(s) you'd like to disable the cache for:

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.

This can be done in a Servlet which forwards to the JSP or a Filter which intercepts on JSP requests.

See also:

  • Making sure that the page is not cached across browsers


BalusC's answer sounds good, but what about a script in the page that does something like this? (JQuery assumed)

<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>
0

精彩评论

暂无评论...
验证码 换一张
取 消