Headers HTTP pour la gestion du cache en Spring MVC 3.0.2
Bonjour
J'ai un souci sur la gestion des headers HTTP pour le cache suite au passage de Spring 3.0.1 en Spring 3.0.2.
J'ai un controller (sans annotations) qui hérite de MultiActionController et dispose de plusieurs méthodes renvoyant un ModelAndView :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public class JsonControler extends MultiActionController{
public ModelAndView getTheme(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView();
List<MeaDTO> meaList = getService().getTheme();
modelAndView.addObject(RESPONSE,meaList);
setCacheControl(response, getWebappConfig().getCacheControlByKey("json.getTheme"));
return modelAndView;
}
protected void setCacheControl(HttpServletResponse response, final int pCacheValue) {
if (pCacheValue != -1) {
applyCacheSeconds(response, pCacheValue);
}
response.addHeader("Cache-Control", "stale-while-revalidate=" + webappConfig.getCacheStaleWhileRevalidate());
}
...
} |
Dans mon fichier de configuration Spring je définis mes mapping d'url, ainsi que de la réécriture d'url via org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
Code:
1 2 3 4 5 6 7 8 9
|
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/catalog/**/*.do-json">jsonControler</prop>
</props>
</property>
</bean> |
Code:
1 2 3 4 5
|
<rule match-type="regex">
<from>^/catalog/home/theme.json$</from>
<to>getTheme.do-json</to>
</rule> |
Mon problème apparait quand je positionne les headers pour le cache via la méthode setCacheControl sur la réponse. Cette méthode appelle applyCacheSeconds du bean WebContentGenerator et ajoute un paramètre 'stale-while-revalidate' au header Cache-Control.
En Spring 3.0.1 cela fonctionne. Entête de la réponse:
Code:
1 2
| Expires : Tue, 16 Aug 2011 xxxx GMT
Cache-Control:max-age=1800, stale-while-revalidate=3600 |
En Spring 3.0.2, je me retrouve avec une date d'expiration en double dont une avec une date en 1970, des paramètres du cache-control supplémentaires. Entête de ma réponse http:
Code:
1 2
| Expires : Tue, 16 Aug 2011 xxxx GMT, Tue, 01 Jan 1970 xxx GMT
Cache-Control:max-age=1800, stale-while-revalidate=3600, no-cache, no-store, max-age=0 |
Ce comportement existe encore en Spring 3.0.5.
Quelqu'un a-t-il déjà été confronté à ce problème ?
Merci d'avance