私たちは、webapp で wro を介して JavaScript リソース (およびその他) を提供しています。PROD 環境では、ブラウザーは (たとえば) app.js angular webapp のコンテンツを 1 年後に「期限切れ」ヘッダーで取得します。
後続のリクエストでは、ブラウザはサーバーへのリクエストなしでキャッシュから取得することを意味します。新しいバージョンの webapp をデプロイすると、ブラウザはローカル キャッシュから取得するため、新しいバージョンを取得しません。
目標は、ブラウザーが毎回リクエストを実行するようにヘッダーが正しく設定され、サーバーが変更されていない 304 を返すように、wro または spring を構成することです。そのため、新しい展開時にクライアントを自動的に「更新」します。誰かがすでにこれを達成しましたか?
Spring の Java 構成を使用します。
@Configuration
public class Wro4jConfiguration {
@Value("${app.webapp.web.minimize}")
private String minimize;
@Value("${app.webapp.web.disableCache}")
private String disableCache;
@Autowired
private Environment env;
@Bean(name = "wroFilter")
public WroFilter wroFilter() {
ConfigurableWroFilter filter = new ConfigurableWroFilter();
filter.setWroManagerFactory(new Wro4jManagerFactory());
filter.setWroConfigurationFactory(createProperties());
return filter;
}
private PropertyWroConfigurationFactory createProperties() {
Properties props = new Properties();
props.setProperty("jmxEnabled", "false");
props.setProperty("debug", String.valueOf(!env.acceptsProfiles(EnvConstants.PROD)));
props.setProperty("gzipResources", "false");
props.setProperty("ignoreMissingResources", "true");
props.setProperty("minimizeEnabled", minimize);
props.setProperty("resourceWatcherUpdatePeriod", "0");
props.setProperty("modelUpdatePeriod", "0");
props.setProperty("cacheGzippedContent", "false");
// let's see if server-side cache is disabled (DEV only)
if (Boolean.valueOf(disableCache)) {
props.setProperty("resourceWatcherUpdatePeriod", "1");
props.setProperty("modelUpdatePeriod", "5");
}
return new PropertyWroConfigurationFactory(props);
}
}