如何清除获取中的缓存?
或者有什么方法可以阻止浏览器将缓存保留在获取?
答案 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>
干杯