2016-07-19 25 views
-1

Ich habe eine JSP-Seite, die zum Herunterladen von PDF-Datei vom Server verwendet wird. Wenn ich die JSP-Seite vom Browser anfordere, liest der JSP die Dateiinformationen aus der Datenbank, erhält den Inputstream aus der Datei und schreibt in ServletOutputStream. Der Pseudo-Code wie folgt aus:ist es möglich, pdf-Datei in Webseite zu cachen?

response.setContentType("application/pdf"); 
response.setHeader("Content-disposition","inline;filename=URLEncoder.encode(filename)"); 
response.setHeader("Cache-Control","max-age=3600"); 
ServletOutputStream os = response.getOutputStream(); 
FileInputStream in = new FileInputStream(new File(filePath)); 
int size = 0; 
byte[] buffer = new byte[512]; 
while((size=in.read(buffer))!=-1){ 
    os.write(buffer,0,size); 
} 

, wenn die Anforderung abgeschlossen wurde die heruntergeladene PDF in Browser geöffnet. Die gleiche Datei wird mehrmals heruntergeladen, daher möchten wir sie im lokalen Dateisystem zwischenspeichern, so dass der Statuscode für die Rückgabe jeder Anfrage 304 ist (nicht geändert), aber die Cache-Kontrolle funktioniert nicht. Kann jemand helfen?

+1

Ihr Code baut die Antwort auf, also würde Ihr Code die Aufgabe haben, eine 304 zu senden. – Holger

Antwort

-1

Dieses Problem wird normalerweise durch einen Reverseproxy wie NGINX oder Varnish vor Ihrer Anwendung gelöst. Alternativ können Sie ein CDN verwenden.