2016-04-25 28 views
5

私はスプリングブートを使用していますが、/staticはjsやcssのような静的リソースとして提供されています。これらのファイルのキャッシュヘッダーを設定したいので、これは:スプリングブートで静的リソースのsetCachePeriodを設定する

@Configuration 
public class BaseMvcConfig extends WebMvcConfigurerAdapter { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/").setCachePeriod(24 * 3600 * 365); 
    } 
} 

しかし、その後、アプリケーションは/staticフォルダから何も配信できません。

問題が何ですか?

答えて

9

私の意見では、spring.resources.cache-periodプロパティを使用して、デフォルトブートのキャッシュ期間を設定することをお勧めします。リソースハンドラ

spring.resources.cache-period = 31536000 
そして BaseMvcConfig設定ファイルを削除します。だからあなたの application.propertiesに以下を追加します。

+0

はファイルだけ、ということを試みました共にキャッシュに関連するヘッダは追加されません。 – hguser

+0

鉱山で 'Cache-Control:max-age = 31536000'が追加されています。どのバージョンのSpring Bootを使用していますか?他の設定が質問に投稿されている場合.. –

+0

Springのデフォルト設定では、ファイルを 'classpath:/ static/all.css'に保存すると' http:// localhost:8080/all.css'。そのJava Configを使用している場合は、リクエストを 'http:// localhost:8080/static/all.css'に送信する必要があります。 –

0

あなたは、静的コンテンツ用のコントローラとセットアップキャッシュの春のセキュリティを使用する場合、あなたはあなたのWebSecurityConfigurerAdapterとapplication.propertiesで設定したキャッシュ期間中に例外を設定することがありますが:

@Override 
public void configure(WebSecurity web) throws Exception { 
    web.ignoring().antMatchers("/js/**", "/css/**"); 
} 

#1 week cache 
spring.resources.cache-period = 604800 
関連する問題