2016-07-19 58 views
-1

我有一個jsp頁面,用於從服務器下載pdf文件。當我從瀏覽器請求jsp頁面時,jsp從數據庫讀取文件信息,從文件獲取inputstream並寫入ServletOutputStream。 僞代碼:有沒有可能在網頁中緩存pdf文件?

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); 
} 

當請求完成後,下載的PDF在瀏覽器中打開。同一個文件被多次下載,所以我們想把它們緩存到本地文件系統,這樣每個請求的返回狀態代碼是304(沒有修改),但緩存控制不起作用,有沒有人可以幫忙?

+1

您的代碼正在構建響應,因此您的代碼將有發送304的任務。 – Holger

回答

-1

此問題通常由您的應用程序前面的NGINX或Varnish等反向代理解決。或者,您可以使用CDN。

相關問題