moh
moh

Reputation: 1526

How to Prevent caching the HTML page in GWT Application

I have an application developed using GWT & SmartGWT. Currently the host page is getting cached in browser which i don't want to do this.I want to prevent the host page(html Page) not to be cached in browser.I tried by adding some tag

 <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
 <meta http-equiv="Pragma" content="no-cache"/>
 <meta http-equiv="Expires" content="0"/>

How to achieve this.Any idea?

Upvotes: 2

Views: 2064

Answers (3)

Tomasz Kańka
Tomasz Kańka

Reputation: 199

Below is Filter class, to prevent caching nochache files from GWT compiler. Add your index.html to if statement and activate Filter in your web.xml

import java.io.IOException;
import java.util.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * {@link Filter} to add cache control headers for GWT generated files to ensure
 * that the correct files get cached.
 * 
 * @author See Wah Cheng
 * @created 24 Feb 2009
 */
public class GWTCacheControlFilter implements Filter {

 public void destroy() {
 }

 public void init(FilterConfig config) throws ServletException {
 }

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,
   ServletException {

  HttpServletRequest httpRequest = (HttpServletRequest) request;
  String requestURI = httpRequest.getRequestURI();

  if (requestURI.contains(".nocache.")) {
   Date now = new Date();
   HttpServletResponse httpResponse = (HttpServletResponse) response;
   httpResponse.setDateHeader("Date", now.getTime());
   // one day old
   httpResponse.setDateHeader("Expires", now.getTime() - 86400000L);
   httpResponse.setHeader("Pragma", "no-cache");
   httpResponse.setHeader("Cache-control", "no-cache, no-store, must-revalidate");
  }

  filterChain.doFilter(request, response);
 }

Upvotes: 1

Tomasz Kańka
Tomasz Kańka

Reputation: 199

Are you sure, that you have a problem with cached "host page", not with cached javascript?

If indeed there is a problem with html page, you can add necessary headers in your web server.

If problem is with caching javascript files with "nochache"names, standard solution is to add filter to your web.xml.

Upvotes: 0

flo-ferox
flo-ferox

Reputation: 158

Try this:

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />

Upvotes: 0

Related Questions