У меня есть веб-сервер Dropwizard с авием отдыха, который также служит для статического контента, такого как 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/main/resources/html. Как кэширование может быть отключено, так что Dropwizard показывает изменения мгновенно?
И второй вопрос, как я могу заставить Dropwizard следовать символическим ссылкам из каталога ресурсов?
Update
Я нашел это в источнике 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. Однако поведение не изменилось.