Domanda

Buon giorno,

Sto usando CacheFilter per filtrare un certo percorso al mio server (che emette un flusso di immagini al flusso di risposta). E Ho configurato nel mio web.xml come segue:

<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 il mio firefox, se posso accedere al mio url tramite la barra degli indirizzi, colpisce il server per la prima volta, ma utilizza la cache durante la successiva chiamata. Tuttavia, se l'URL è dentro la mia pagina (cioè <img src="..."/>), sembra colpire il server di tutto il tempo.

[EDIT] Dopo un po 'di più test, l'accesso a mia immagine tramite la barra degli indirizzi non funziona tutto il tempo. Ma caching sembra funzionare più spesso con esso che. Quanto alla questione se in realtà, non sono sicuro.

Informazione supplementare: il mio percorso è qualcosa come / mio / percorso? allora = Alcuni & query = stringhe. Si noti che non ha un'estensione (cioè gif, png, jpeg) ma è tipo MIME è impostato correttamente (image / gif, image / jpeg, image / jpeg). Non sono sicuro se la mancanza di estensione o la presenza delle stringhe di query hanno alcun impatto. (Inoltre, un'altra nota. Se il mio url hanno stringhe di query, sto usando lo stesso URI + string query più e più volte con i miei test).

Tutte le idee perché?

Grazie

È stato utile?

Soluzione

Si desidera guardare soprattutto per qualsiasi intestazione Cache-Control nella vostra richiesta. Se una richiesta dice qualcosa come Cache-Control: no-cache o Cache-Control: max-age = 0, allora le cache non possono servire una copia cache. Oppure, se la risposta ha un Expires che è troppo vicino nel tempo, allora non può essere memorizzato nella cache a lungo.

L'elenco completo delle intestazioni e spiegazioni è nella specifica HTTP 1.1. Vedere Caching in HTTP (13) e campo di intestazione Definizioni (14)

Il Firebug plug-in è un buon modo per controllare richiesta e di risposta intestazioni che utilizzano Firefox.

Anche guardare come si sta utilizzando Firefox. Colpire il pulsante di aggiornamento equivale a dire Cache-Control:. No-cache - si dice che si desidera il più fresco possibile copia, che porta tutto il senso di nuovo al vostro web server di origine

Altri suggerimenti

Vorrei investigare la richiesta HTTP viene inviata - in particolare le intestazioni HTTP inviati per quella richiesta di immagine. È possibile utilizzare un plugin per Firefox , e / o controllare le intestazioni a l'estremità servlet (nell'oggetto HttpServletRequest)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top