问题描述
我注意到,当我们使用DWR时,浏览器对Java脚本文件的请求很多。 似乎DWR脚本没有被浏览器缓存。
重复下载的响应标头如下所示:
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1268
Content-Type:text/javascript;charset=utf-8
Date:Tue, 28 Jul 2015 11:27:17 GMT
Keep-Alive:timeout=10, max=498
Server:Apache
Vary:Accept-Encoding
请注意,在响应标头中,没有Last-Modified标头。 这就是浏览器在每次页面加载时都会重新加载脚本的原因。此脚本是DWR接口脚本。 当您使用DWR(通过dwr- .xml中的create标记)公开Java方法时,DWR将创建接口javascript。 该文件实现了调用远程Java方法(使用DWREngine._execute)的javascript方法。 除非更改了dwr- .xml中公开的方法并且重新启动了应用程序, 否则接口脚本不会更改 。 因此,脚本应该是可缓存的。
如何在响应中添加Last-Modified?
1楼
我很惊讶这不是DWR内置的。
您总是可以在Web应用程序中配置自定义 。
可以公平地假设脚本在ServletContext的生命周期内不会改变。
也许您可以在webapp启动时存储时间戳,并让过滤器为/dwr/*
设置Last-Modified标头