我有一个Dropwizard Web服务器,其中包含一个REST API,还提供一些静态内容,如HTML、CSS、JavaScript和JPG图像。不幸的是,当我更改HTML或添加另一张图片时,服务器总是需要重新启动才能生效。
考虑到这可能是缓存问题,我研究了bazaarvoice的可配置资产捆绑包。
这是我在配置类中添加的内容:
没有yaml配置的更改。
静态文件位于 src / main / resources / html 中。如何禁用缓存,以便Dropwizard立即显示更改?
第二个问题,如何使Dropwizard从资产目录跟随符号链接?
更新
我在ConfiguredAssetsBundle源中找到了这个:
这肯定会覆盖代码中设置的缓存构建器规范,使用来自yaml文件的配置。添加后。
关于配置,调试器显示最大大小现在为0。然而,行为并没有改变。
考虑到这可能是缓存问题,我研究了bazaarvoice的可配置资产捆绑包。
这是我在配置类中添加的内容:
@Valid
@NotNull
@JsonProperty
private final AssetsConfiguration assets = new AssetsConfiguration();
而在主类中
@Override
public void initialize(Bootstrap<MyConfiguration> bootstrap) {
// ...
CacheBuilderSpec cacheBuilderSpec = CacheBuilderSpec.disableCaching();
bootstrap.addBundle(new ConfiguredAssetsBundle("/html", cacheBuilderSpec, "/", "index.html", "Static assets"));
}
@Override
public void run(MyConfiguration config, Environment env) {
env.jersey().setUrlPattern("/api/*");
// ...
}
没有yaml配置的更改。
静态文件位于 src / main / resources / html 中。如何禁用缓存,以便Dropwizard立即显示更改?
第二个问题,如何使Dropwizard从资产目录跟随符号链接?
更新
我在ConfiguredAssetsBundle源中找到了这个:
// Let the cache spec from the configuration override the one specified in the code
CacheBuilderSpec spec = (config.getCacheSpec() != null)
? CacheBuilderSpec.parse(config.getCacheSpec())
: cacheBuilderSpec;
这肯定会覆盖代码中设置的缓存构建器规范,使用来自yaml文件的配置。添加后。
assets:
cacheSpec: maximumSize=0
关于配置,调试器显示最大大小现在为0。然而,行为并没有改变。