php header中的Cache-control參數說明

網頁的緩存是由HTTP消息頭中的「Cache-control」來控制的,常見的取值有private、no-cache、max-age、must-revalidate等,默認爲private。其做用根據不一樣的從新瀏覽方式分爲如下幾種狀況: (1) 打開新窗口     值爲private、no-cache、must-revalidate,那麼打開新窗口訪問時都會從新訪問服務器。而若是指定了max-age值,那麼在此值內的時間裏就不會從新訪問服務器,例如:Cache-control: max-age=5(表示當訪問此網頁後的5秒內再次訪問不會去服務器) (2) 在地址欄回車    值爲private或must-revalidate則只有第一次訪問時會訪問服務器,之後就再也不訪問。值爲no-cache,那麼每次都會訪問。值爲max-age,則在過時以前不會重複訪問。 (3) 按後退按扭   值爲private、must-revalidate、max-age,則不會重訪問,值爲no-cache,則每次都重複訪問 (4) 按刷新按扭   不管爲什麼值,都會重複訪問 Cache-control值爲「no-cache」時,訪問此頁面不會在Internet臨時文章夾留下頁面備份。 另外,經過指定「Expires」值也會影響到緩存。例如,指定Expires值爲一個早已過去的時間,那麼訪問此網時若重複在地址欄按回車,那麼每次都會重複訪問: Expires: Fri, 31 Dec 1999 16:00:00 GMT 好比:禁止頁面在IE中緩存 http響應消息頭部設置: CacheControl = no-cache Pragma=no-cache Expires = -1 header("Content-Type: application/vnd.ms-execl"); header("Content-Disposition: attachment; filename=info.xls"); header("Pragma: no-cache"); header("Expires: 0"); Expires是個好東東,若是服務器上的網頁常常變化,就把它設置爲-1,表示當即過時。若是一個網頁天天凌晨1點更新,能夠把Expires設置爲次日的凌晨1點。 當HTTP1.1服務器指定CacheControl = no-cache時,瀏覽器就不會緩存該網頁。 舊式 HTTP 1.0 服務器不能使用 Cache-Control 標題。 因此爲了向後兼容 HTTP 1.0 服務器,IE使用Pragma:no-cache 標題對 HTTP 提供特殊支持。 若是客戶端經過安全鏈接 (https://)與服務器通信,且服務器在響應中返回 Pragma:no-cache 標題, 則 Internet Explorer不會緩存此響應。注意:Pragma:no-cache 僅當在安全鏈接中使用時才防止緩存,若是在非安全頁中使用,處理方式與 Expires:-1相同,該頁將被緩存,但被標記爲當即過時。
相關文章
相關標籤/搜索