Pregunta

Buenos días,

Estoy usando CacheFilter para filtrar un cierto camino a mi servidor (que da salida a un flujo de imágenes de la secuencia de respuesta). Y he configurado en mi web.xml de la siguiente manera:

<filter>
    <filter-name>imagesCache</filter-name>
    <filter-class>com.samaxes.cachefilter.presentation.CacheFilter</filter-class>
    <init-param>
        <param-name>privacy</param-name>
        <param-value>public</param-value>
    </init-param>
    <init-param>
        <param-name>expirationTime</param-name>
        <param-value>2592000</param-value>
    </init-param>
</filter>

...
<filter-mapping>
    <filter-name>imagesCache</filter-name>
    <url-pattern>/my/path/*</url-pattern>
</filter-mapping>

Usando mi firefox, si accedo a mi URL a través de la barra de direcciones, que llegue al servidor de la primera vez, pero utiliza la memoria caché durante sucesivas llamadas. Sin embargo, si la URL es dentro de mi página (es decir <img src="..."/>), parece golpear el servidor todo el tiempo.

[EDIT] Después de unas cuantas más pruebas, el acceso a mi imagen a través de la barra de direcciones no funciona todo el tiempo. Sin embargo, el almacenamiento en caché parece funcionar más a menudo con ella que. En cuanto a si realmente, no estoy seguro.

Información adicional: mi camino es algo así como / mi / ruta? entonces y = alguna consulta = cuerdas. Nótese que no tiene una extensión (es decir, GIF, PNG, JPEG) pero es mimetype esté correctamente configurado (image / gif, image / gif, image / jpeg). No estoy seguro de si la falta de extensión o la presencia de las cadenas de consulta tienen ningún impacto. (También, otra nota. Pesar de que mi URL tienen cadenas de consulta, estoy usando la misma cadena URI + consulta una y otra vez con mis pruebas).

Cualquier idea por qué?

Gracias

¿Fue útil?

Solución

¿Quieres ver especialmente para cualquier encabezado Cache-Control en su solicitud. Si una solicitud dice algo así como Cache-Control: no-cache o Cache-Control: max-age = 0, entonces cachés no pueden servir una copia en caché. O si la respuesta tiene un Expira cabecera que está demasiado cerca en el tiempo, entonces no puede ser almacenado en caché por mucho tiempo.

La lista completa de las cabeceras y las explicaciones se encuentra en la especificación HTTP 1.1. Ver almacenamiento en caché en HTTP (13) y Header Definiciones de campo (14)

El Firebug plug-in es una buena manera de comprobar las cabeceras de petición y respuesta utilizando Firefox.

También esté atento a cómo se está usando Firefox. Golpear el botón de actualización es equivalente a decir Cache-Control:. No-cache - que dice que desea la copia más fresco posible, que le lleva todo el camino de vuelta a su servidor Web de origen

Otros consejos

Me gustaría investigar la petición HTTP que se envía - en particular las cabeceras HTTP que se envían para esa solicitud de imagen. Puede utilizar un plugin de Firefox , y / o verificar los encabezados en el extremo servlet (en el objeto HttpServletRequest)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top