header("Pragma: public"); //1 Public指示響應可被任何緩存區緩存。 header("Expires: 0"); //2 瀏覽器不會響應緩存 header("Cache-Control:must-revalidate, post-check=0, pre-check=0");//3 header("Content-Type:application/force-download");//4 請求該頁面就出現下載保存窗口。 header("Content-Type:application/octet-stream");//5 二進制流,不知道下載文件類型。 header("Content-Type:application/vnd.ms-excel;");//6 header("Content-Type:application/download");//7 提示用戶將當前文件保存到本地。 header("Content-Disposition:attachment;filename=測試.xlsx");//8 header("Content-Transfer-Encoding:binary");//9
//3
must-revalidate : 必須去服務器端驗證,也就是一定不讀緩存。
Internet Explorer 5有一項叫作Lazy Update (“懶惰”更新)的新特性。Lazy Update可以使網站將一個對象緩存起來,同時又可以計算此對象的被點擊數。這對廣告圖像、首頁或搜索頁是非常有用的。在這些頁面上,你希望用戶立即看到頁面,但是你又想在某些地方更新內容並且跟蹤記錄有多少人已看過你的頁面。對於一個Lazy Update頁面,在它首次被訪問時,其上的對象就被下載並被高速緩存起來。接下來,用戶看到的是被緩存起來的內容。如果服務器有了新的內容,則該頁面將會在后台被下載到高速緩存中。當用戶下次訪問該頁面時,將顯示被更新的內容。
為了支持這種功能,Internet Explorer 5對於HTTP頭信息使用兩種新的時間間隔指示:pre-check 和post-check。pre-check擴展名定義了這樣一段時間間隔(以秒記):即在這段時間間隔之后,一個對象在顯示給用戶之前應被選中進行更新。選中對象也可以發生在該對象已經顯示給用戶之后,但是,要保證在用戶下次想要看這個對象時,被高速緩存起來的副本是更新過的。post-check擴展名定義了這樣一段時間間隔(以秒記):即在這段時間之后,在顯示給用戶之前,該對象被選中進行更新。因為這兩個擴展名是對HTTP頭信息的擴充,所以,它們只能用於通過HTTP協議進行檢索的頁面上。另外,服務器必須產生HTTP 1.1響應。Internet Information Server (IIS) 4.0及其以后版本均支持這一特性。
通過改變EXPIRES屬性以及使用這兩個控制高速緩存的擴展名,可以更快地與服務器連接並能更迅速地提交內容。Internet Explorer 5可以提高你的網站在用戶的機器上的性能表現。另外,內容可以在后台被更新並在以后的訪問中顯示出來.
//6
表示要下載的文件類型是 .xls 關於這個參數,可以去百度 ‘’ HTTP Content-type ‘’ 。http://www.cnblogs.com/benpaodelulu/p/7289860.html
//8
//attachment --- 作為附件下載
//inline --- 在線打開
作為附件下載,文件名是 測試.xlsx
//9
Content-Transfer-Encoding: 參數
"BASE64" / "QUOTED-PRINTABLE" /
"8BIT" / "7BIT" /
"BINARY" / x-token
8bit和binary都表示傳輸的內容是未編碼的原始數據。
但是根據郵件傳輸的相關協議,每行最多1000個字符。8bit表示數據符合這個協議要求,binary表示不一定符合(可能有超過1000字符的行)。
BASE64 意味着身體是Base64編碼ASCII,原本ISO-8859-1數據編碼,並將該字符集在解碼后再次設置(也就是說,本來是base64,解碼以后再設置成base64編碼)。
說明文檔: https://www.w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html
Cache-Control頭域
Cache-Control指定請求和響應遵循的緩存機制。在請求消息或響應消息中設置Cache-Control並不會修改另一個消息處理過程中的緩存處理過程。請求時的緩存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,響應消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各個消息中的指令含義如下:
Public指示響應可被任何緩存區緩存。
Private指示對於單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許服務器僅僅描述當用戶的部分響應消息,此響應消息對於其他用戶的請求無效。
no-cache指示請求或響應消息不能緩存
no-store用於防止重要的信息被無意的發布。在請求消息中發送將使得請求和響應消息都不使用緩存。
max-age指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。
min-fresh指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。
max-stale指示客戶機可以接收超出超時期間的響應消息。如果指定max-stale消息的值,那么客戶機可以接收超出超時期指定值之內的響應消息。
HTTP消息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。
普通報頭中的Cache-Control用於指定緩存指令,緩存指令是單向的(響應中出現的緩存指令在請求中未必會出現),且是獨立的(一個消息的緩存指令不會影響另一個消息處理的緩存機制),HTTP1.0使用的類似的報頭域為Pragma。
請求時的緩存指令包括:no-cache(用於指示請示或響應消息不能緩存)、no-store、max-age、max-stale、min-fresh、only-if-cached;
響應時的緩存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。
例:為了指示IE瀏覽器(客戶端)不要緩存頁面,服務器端如下:
Header(“Cache-Control”, “no-cache”);
Header(“Pragma”, “no-cache”);作用相當於上行代碼,通常兩者合用
Expires實體報頭域給出響應過期的日期和時間。為了讓代理服務器或瀏覽器在一段時間以后更新緩存中(再次訪問曾訪問過的頁面時,直接從緩存中加載,縮短響應時間和降低服務器負載)的頁面,我們可以使用Expires實體報頭域指定頁面過期時間。例:Expires:Thu,15 Sep 2006 16:23:12 GMT
HTTP1.1的客戶端和緩存必須將其他非法的日期格式(包括0)看作已經過期。如:為了讓瀏覽器不緩存頁面,也可以利用Expires實體報頭域,設置為0,
————————————————
版權聲明:本文為CSDN博主「pendant59」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/benpaodelulu_guajian/java/article/details/77507140