我有一個Dropwizard網絡服務器,其餘的api也提供一些靜態內容,如html,css,javascript和jpg圖像。不幸的是,當我更改html或添加其他圖像時,始終需要重新啓動服務器才能將更改生效。在Dropwizard中禁用靜態資產緩存
正如我認爲這可能是一個緩存問題,我探索了bazaarvoice's Configurable Assets Bundle。
這就是我添加到配置類:
@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 /主/資源/ 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.但是,行爲沒有改變。