3.18. Defeating Browser Caching
Problem
You want to force the browser to display an up-to-date JSP page instead of showing the page from the browser's cache.
Solution
Set the nocache attribute to true for the
controller element in your
struts-config.xml
file.
<controller nocache="true"/>
Discussion
To speed processing, browsers frequently keep a copy of a visited page on the client's local system. If an identical URL for the original page is requested and that page hasn't expired, the browser may display the page from the local cache instead of issuing a new request. This caching reduces network traffic and improves the user experience significantly. However, this can cause problems for dynamically generated pages. Consider a JSP page that renders data retrieved from the HTTP session. If data stored in the session changes, the browser won't be aware of the change. When the browser receives a new request for the page, it serves up the old page instead.
The easiest means of solving this problem for a Struts application is
to configure the Struts RequestProcessor to
generate a nocache header entry for every
generated HTTP response. Set the nocache attribute
to true on the controller element, as shown in the
Solution. If the nocache attribute is not
specified, the default value is false.
While this solves the problem, a consequence of its use is that every
page accessed through a Struts Action results in a new request being sent to the server, even if the data haven't changed. One alternative ...