java - una - recargar pagina sin cache chrome
cómo establecer el encabezado sin caché en primavera mvc 3 mediante anotación (3)
cómo establecer el encabezado sin caché en primavera mvc 3 mediante anotación? no es
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
No hay tal opción. Puedes usar un interceptor:
<mvc:annotation-driven/>
<mvc:interceptors>
<bean id="webContentInterceptor"
class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="0"/>
<property name="useExpiresHeader" value="true"/>
<property name="useCacheControlHeader" value="true"/>
<property name="useCacheControlNoStore" value="true"/>
</bean>
</mvc:interceptors>
(tomado de here )
Por un lado, es lógico no tener dicha anotación. Las anotaciones sobre los métodos spring-mvc son principalmente para permitir que el contenedor decida qué método invocar (limitándolo por un encabezado de solicitud, url de solicitud o método). Controlar la respuesta no entra en esta categoría.
Por otro lado, sí, será útil tenerlos, porque cuando los controladores se prueban en unidades, no es relevante probar material del encabezado http (¿o no?). Y están @ResponseBody
y @ResponseStatus
, que sí especifican algunas propiedades de respuesta.
Para anular la configuración de ciertas asignaciones de controladores, use el objeto de propiedades cacheMappings en WebContentInterceptor
<bean id="webContentInterceptor"
class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="2100" />
<property name="useExpiresHeader" value="true" />
<property name="useCacheControlHeader" value="true" />
<property name="useCacheControlNoStore" value="true" />
<property name="cacheMappings">
<props>
<prop key="/myUncachedController">0</prop>
</props>
</property>
Sé que esto es viejo, pero esto podría ser útil para algunos.
Si desea agregar mucha más lógica a la caché y cuando no lo tiene, también puede escribir un interceptor personalizado.
Por ejemplo, si desea inhabilitar el almacenamiento en caché en la respuesta solo cuando el navegador es IE o solo desde direcciones URL específicas, puede hacerlo ampliando la interfaz HandlerInterceptor .
Al hacer eso, puedes tener mucho control sobre lo que sucede exactamente. No es tan fácil como simplemente configurar el encabezado para todo a la vez o simplemente escribir los cambios a la respuesta en cada controlador, pero tampoco es tan difícil y es una mejor solución a largo plazo en mi opinión. También es bueno saber cómo hacerlo en primavera en general.
Este es un buen tutorial para ello:
http://www.mkyong.com/spring-mvc/spring-mvc-handler-interceptors-example/