Sha*_*hid 15 browser gwt caching
我在客户的机器上部署了一个GWT应用程序.作为一项持续的开发,我们不得不不时发布应用程序的新改进版本.每当我们发布新版本时,我们经常会遇到客户端浏览器缓存旧脚本脚本的问题,并且有一段时间它会表现得很糟糕,因为它尝试使用的数据与它不完全兼容.解决这个问题的最佳方法是什么?目前我必须告诉用户清除他们的浏览器缓存以获得新版本,但是他们不必这样做会很好.
mor*_*sil 15
可能的解决方案取决于您托管应用程序的方式.如果您直接从servlet容器托管,那么您可以使用servlet过滤器,如下所述:
http://seewah.blogspot.com/2009/02/gwt-tips-2-nocachejs-getting-cached-in.html
以下是来自tadedon库的适当过滤器:
这里是guice ServletModule,它支持整个guice Web应用程序:
如果你在tomcat前面使用一些反向代理,它会更简单.在apache的情况下(例如mod_proxy,mod_jk),并假设所有应用程序资源(html,图形,java脚本,css等)都放在apache上,只需在apache配置中设置这些选项:
<Files *.nocache.*>
ExpiresDefault "access"
</Files>
<Files *.cache.*>
ExpiresDefault "now plus 1 year"
</Files>
Run Code Online (Sandbox Code Playgroud)
这里描述:
http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html
在"完美缓存"部分.此类部署方案假定只有rpc请求应通过反向代理到tomcat.如果由于某些原因将所有应用程序上下文代理到tomcat,您仍然可以使用apache的LocationMatch指令而不是Files指令.
Jas*_*all 14
默认情况下,浏览器应缓存大部分应用,直到构建过程生成新版本的应用程序.
理解GWT引导模型可能有助于理解其工作原理.
客户端请求的第一个脚本your-app-name.nocache.js不会被缓存,除了检查浏览器的用户代理和功能外,它什么都不做,并对相关的应用程序JS发出第二个请求.
此时,如果之前已请求过,则它请求的脚本应由浏览器缓存.这是一个{indistinguisable-numbers-and-letters}.cache.html文件.
重新部署应用程序时,nocache.js将执行该文件,并要求提供cache.html与服务器不同的文件,该文件不会出现在缓存中,但下载后将由浏览器缓存.
您是否正在使用延迟绑定或服务器上的缓存标头执行任何异常操作?这可能会导致您的nocache.js文件被缓存,这将使它cache.html从浏览器缓存中请求旧的.
| 归档时间: |
|
| 查看次数: |
10904 次 |
| 最近记录: |