user246114
user246114

Reputation: 51651

Expiring a page in the browser?

I've made a twitter-like web app. Users can follow one another when viewing eachother's pages. Here's a high-level description of what's happening:

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

Upvotes: 1

Views: 184

Answers (2)

bobobobo
bobobobo

Reputation: 67266

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>

Upvotes: 1

BalusC
BalusC

Reputation: 1109132

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:

Upvotes: 2

Related Questions