Reputation: 51651
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
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
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.
Upvotes: 2