Vaadin AbstractJavaScriptComponent:阻止浏览器 javascript 缓存
Vaadin AbstractJavaScriptComponent: prevent browser javascript caching
我的 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
.[=17 执行此操作=]
我通过使用 Vaadin servlet 配置的 resourceCacheTime
参数克服了这个问题:
@VaadinServletConfiguration(ui = MyUI.class, resourceCacheTime = 0)
有关默认值,请参阅 DefaultDeploymentConfiguration.class。
将此值设置为 0
添加以下响应 header:
cache-control: public, max-age=0, must-revalidate
指示缓存每次都重新验证此资源。
com.vaadin.server.communication.PublishedFileHandler.handleRequest
是创建已发布文件响应的位置。这里的问题是这是所有已发布资源的全局设置,因此自定义它的唯一方法是创建您的已发布文件处理程序。
也许Vaadin会考虑在@Javascript/@StyleSheet注解中添加另一个选项来实现更具体的资源缓存时间。
我的 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
.[=17 执行此操作=]
我通过使用 Vaadin servlet 配置的 resourceCacheTime
参数克服了这个问题:
@VaadinServletConfiguration(ui = MyUI.class, resourceCacheTime = 0)
有关默认值,请参阅 DefaultDeploymentConfiguration.class。
将此值设置为 0
添加以下响应 header:
cache-control: public, max-age=0, must-revalidate
指示缓存每次都重新验证此资源。
com.vaadin.server.communication.PublishedFileHandler.handleRequest
是创建已发布文件响应的位置。这里的问题是这是所有已发布资源的全局设置,因此自定义它的唯一方法是创建您的已发布文件处理程序。
也许Vaadin会考虑在@Javascript/@StyleSheet注解中添加另一个选项来实现更具体的资源缓存时间。