Vaadin抽象JavaScript组件:防止浏览器JavaScript缓存

3

我的Vaadin应用程序中有一个自定义JavaScript组件,它扩展了AbstractJavaScriptComponent

@JavaScript({"javaScriptConnector.js", "MyComp.js", "MyCompHtml.js"})
public class MyComp extends AbstractJavaScriptComponent {
.....
.....
}

每当我对MyComp.js进行更改时,我需要清除浏览器缓存才能看到更改。这在开发应用程序时是可以接受的,但一旦应用程序上线,我不能要求用户清除缓存。
有没有办法防止浏览器缓存MyComp.js?我知道一个技巧,即将查询字符串附加到javascript中(例如:MyComp.js?v=1),但我不知道如何在vaadin AbstractJavaScriptComponent中实现它。
1个回答

4
我通过利用Vaadin servlet配置中的resourceCacheTime参数来解决了这个问题: @VaadinServletConfiguration(ui = MyUI.class, resourceCacheTime = 0) 有关默认值,请参见DefaultDeploymentConfiguration.class
将该值设置为0会添加以下响应标头: cache-control: public, max-age=0, must-revalidate 指示缓存每次重新验证此资源。 com.vaadin.server.communication.PublishedFileHandler.handleRequest是创建发布文件响应的地方。问题在于,这是所有发布资源的全局设置,因此自定义此设置的唯一方法是创建自己的发布文件处理程序。
也许Vaadin会考虑添加另一个选项到@Javascript/@StyleSheet注释中,以实现更特定的资源缓存时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接