caching-Bilder serviert, die von servlet
Bin ich mit Bildern von meinem servlet. Die Antwort der content-type ist image/jpeg. Ich finde, dass die Bilder angefordert von meinem servlet nicht zwischengespeichert. Wie bekomme ich Sie zwischengespeichert werden, wie die image-Datei-Anfragen werden normalerweise? Ich habe versucht, Cache-Control: public, aber ohne Erfolg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Standard-servlet statischen Inhalte in Containern wie Tomcat nicht jeder cache-control-Header. Sie nicht brauchen, schreiben Sie ein servlet, das nur für die. Erstellen Sie einfach einen filter wie diesen,
Wann immer Sie wollen hinzufügen, cache-control, fügen Sie einfach den filter, um die Ressourcen in web.xml. Zum Beispiel,
cacheAge
sind die Anzahl der Sekunden Sie wollen Sachen zwischengespeichert werden.Müssen Sie senden die
ETag
,Last-Modified
undAblauf
Header zusammen die Antwort. DieETag
repräsentiert die eindeutige id der Datei (in der Regel aus, basierend auf einer Kombination von Dateiname, Dateigröße und lastmodified timestamp). DieLast-Modified
stellt die last modified-Zeitstempel der Datei. DieExpires
header kennzeichnet, wie lange der client berechtigt ist, damit die Datei im cache. Wenn der cache abgelaufen ist, und dieETag
oderLast-Modified
verfügbar sind, dann wird der client sendet eineHEAD
Anfrage um zu überprüfen, ob die Datei muss erneuert werden. Wenn nicht, dann ist dieExpires
wird einfach verschoben werden entsprechend wieder.Finden Sie hier einen servlet-Beispiel, das diese verarbeitet alle (und der download wird fortgesetzt und automatische GZIP): FileServlet Unterstützung fortsetzen und GZIP
Zum Beispiel, wenn Sie Zwischenspeichern möchten Sie für 1 Monat:
(dies ist in einem
Filter
behandelt die*.jpg
Muster, zum Beispiel)Aber die Bilder zwischengespeichert werden sollen (standardmäßig überprüfen Sie Ihre Filter und Konfigurationen, um zu sehen, wenn etwas nicht in der Einstellung der cache-Parameter falsch.
Ok.. sieht aus wie die Standard-header-Felder, die das caching einzuschalten. Ich habe eine Lösung gefunden in einem anderen forum. Offensichtlich, müssen Sie explizit einen content-length im response. Frage mich warum obwohl. Ich dachte, das HttpServletResponse würde das für uns tun. Trotzdem, es funktionierte wie ein Charme, und das Bild wird immer zwischengespeichert schön.