Java 在Dropwizard中禁用静态资产的缓存
我有一个带有RESTAPI的Dropwizard Web服务器,它还提供一些静态内容,如html、css、javascript和jpg图像。不幸的是,当我更改html或添加另一个图像时,服务器总是需要重新启动才能使更改生效 因为我认为这可能是缓存的问题,所以我进行了探索 这就是我添加到configuration类中的内容:Java 在Dropwizard中禁用静态资产的缓存,java,caching,assets,cache-control,dropwizard,Java,Caching,Assets,Cache Control,Dropwizard,我有一个带有RESTAPI的Dropwizard Web服务器,它还提供一些静态内容,如html、css、javascript和jpg图像。不幸的是,当我更改html或添加另一个图像时,服务器总是需要重新启动才能使更改生效 因为我认为这可能是缓存的问题,所以我进行了探索 这就是我添加到configuration类中的内容: @Valid @NotNull @JsonProperty private final AssetsConfiguration assets = new AssetsConf
@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文件中的配置设置的缓存生成器规范。追加后
assets:
cacheSpec: maximumSize=0
对于配置,调试器显示最大大小现在为0。但是,行为没有改变。静态内容没有改变,不是因为需要重新启动,而是因为正在运行的服务器实际上为目标目录下的文件提供服务。更改此目录中的文件只会使事情变得混乱(因此这不是一个真正的解决方案),但更改几行并等待一秒钟,以验证服务器现在是否提供修改后的文件,而无需重新启动 作为一种解决方案,我更喜欢在eclipse中以maven项目的形式打开dropwizard项目,并使用
exec-maven插件在终端上运行该项目。Eclipse会随着文件的更改更新目标目录,但这需要几秒钟的时间,具体取决于项目的大小
assets:
cacheSpec: maximumSize=0