Je viens de rencontrer le même problème, et j'ai trouvé une bonne solution déjà fournie par le framework. Le site org.springframework.web.servlet.mvc.WebContentInterceptor
vous permet de définir un comportement de mise en cache par défaut, plus des surcharges spécifiques au chemin (avec le même comportement de path-matcher utilisé ailleurs). Les étapes pour moi ont été les suivantes :
- Assurez-vous que mon instance de
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
n'a pas la propriété "cacheSeconds" définie.
-
Ajouter une instance de WebContentInterceptor
:
<mvc:interceptors>
...
<bean class="org.springframework.web.servlet.mvc.WebContentInterceptor" p:cacheSeconds="0" p:alwaysUseFullPath="true" >
<property name="cacheMappings">
<props>
<!-- cache for one month -->
<prop key="/cache/me/**">2592000</prop>
<!-- don't set cache headers -->
<prop key="/cache/agnostic/**">-1</prop>
</props>
</property>
</bean>
...
</mvc:interceptors>
Après ces changements, les réponses sous /foo incluaient des en-têtes pour décourager la mise en cache, les réponses sous /cache/me incluaient des en-têtes pour encourager la mise en cache, et les réponses sous /cache/agnostic n'incluaient aucun en-tête lié à la mise en cache.
Si vous utilisez une configuration purement Java :
@EnableWebMvc
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
/* Time, in seconds, to have the browser cache static resources (one week). */
private static final int BROWSER_CACHE_CONTROL = 604800;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/images/**")
.addResourceLocations("/images/")
.setCachePeriod(BROWSER_CACHE_CONTROL);
}
}
Voir aussi : http://docs.spring.io/spring-security/site/docs/current/reference/html/headers.html
0 votes
Pour les nouveaux utilisateurs, c'est probablement la réponse que vous cherchez