如何在gwt中清除缓存?

时间:2010-11-25 05:37:17

标签: gwt

如何清除获取中的缓存?

或者有什么方法可以阻止浏览器将缓存保留在获取

2 个答案:

答案 0 :(得分:16)

部署GWT应用程序时,避免代理和浏览器缓存GWT生成的.nocache.js文件非常重要。一种解决方案是实现一个servlet过滤器,它添加了控制缓存行为的必要HTTP头。

以下是这样的过滤器:http://seewah.blogspot.com/2009/02/gwt-tips-2-nocachejs-getting-cached-in.html

该示例中的标题是:

Date: Wed, 24 Nov 2010 20:32:43 GMT
Expires: Wed, 01 Nov 2000 00:00:00 GMT
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate

Date应设置为请求的时间。

Expires最好设置在过去的某个时间,这会迫使每个人都认为内容已经陈旧。

Pragma是一个已被Cache-Control取代的标记,但拥有它并没有什么坏处。

Cache-Control no-cache表示浏览器或代理必须在将缓存副本发布到客户端之前重新验证它。 no-store表示没有人保留缓存副本(这会使no-cache变得多余)。 must-revalidate表示浏览器/代理必须遵守新鲜度信息并重新验证,no-store也是多余的。

答案 1 :(得分:0)

当您在中间安装Apache2服务器时,最好的方法是配置虚拟主机,以便始终下载css nocache文件。这里有一个例子:http://pgt.de/2011/01/27/apache-configuration-for-gwt-applications/comment-page-1/#comment-23996

将其放在虚拟服务器文件中:

  <IfModule mod_expires.c>
     ExpiresActive On
  </IfModule>

  <IfModule mod_headers.c>
     <ProxyMatch (.*)nocache\.js$>
        Header Set Cache-Control "max-age=0, no-store"
     </ProxyMatch>
     <ProxyMatch (.*)\.cache\.(.*)>
        Header Set Cache-Control "max-age=31536000, public, must-revalidate"
     </ProxyMatch>
     <ProxyMatch (.*)\.cache\.js$>
        Header Set Cache-Control "max-age=31536000, private"
     </ProxyMatch>
  </IfModule>

 <Proxy *>
     <IfModule mod_expires.c>
        ExpiresByType application/json   "now"
        ExpiresByType text/css            "now"
        ExpiresByType text/html          "now"
     </IfModule>
     <ifModule mod_headers.c>
         Header unset ETag
         Header unset Last-Modified
     </ifModule>
     FileETag None
  </Proxy>

干杯