php實作禁止瀏覽器快取的方法:可以透過meta標籤來實現禁止靜態頁的緩存,如【】,expires用於設定網頁的過期時間。
方法如下:
(影片教學推薦:php影片教學)
一、對於靜態頁(就是透過meta標籤來設定)
<!--expires用于设定网页的过期时间,一旦过期就必须从服务器上重新加载.时间必须使用GMT格式--> <meta http-equiv="expires" content="0" />
或透過pragma no-cache來設置,pragma出現在http-equiv屬性中,使用content屬性的no-cache值表示是否快取網頁(為了提高速度一些瀏覽器會快取瀏覽者瀏覽過的頁面,透過下面的定義,瀏覽器一般不會快取頁面,而且瀏覽器無法脫機瀏覽)。
<meta http-equiv="pragma" content="no-cache" />
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訊息的值,那麼客戶機可以接收超出超時期指定值之內的回應訊息。
注意:Cache-Control 頭標是在HTTP1.1裡面新增的,相對於其他幾種方式能夠實現更細緻的快取控制。
<meta http-equiv="Cache-Control" content="no-cache,no-store, must-revalidate"> header('Cache-Control: max-age=3600*24');//缓存1天,表示最大生存期是1天,超过1天浏览器必须去服务器重新读取,这个时间是从用户第一次读取页面时开始计时的
二、對於PHP頁面:
對於動態頁面,快取的程式碼必須放在任何HTML標籤輸出之前,否則將會出錯。
<?php header('Cache-Control:no-cache,must-revalidate'); header('Pragma:no-cache'); header("Expires:0"); ?>
Last-Modified:文件的最後修改時間。它的用法是:
1:如果是靜態文件,客戶端會發上來它緩存裡的時間,apache會來比對,如果發現沒有修改就直接回傳一個頭,狀態碼是304,位元組數非常少。
2:如果是php動態文件,客戶端發上比對時間,php會判斷是否修改,如果修改時間相同,就只會返回1024字節,至於為什麼返回1024不得而知,如果你的php產生的檔案非常大,它也只回傳1024,所以比較省頻寬,客戶端會根據伺服器端發過來的修改時間自動從快取檔案顯示。
注意:如果沒有設定Last-Modified頭,只設定了Cache-Control和Expires也是可以運作的,但每次要求要傳回真實的檔案位元組數,而不是1024
#php設定Last-Modified 頭標範例程式碼如下:
header('Last-Modified: '.gmdate('D, d M Y 01:01:01',$time).' GMT');//使用的是格林尼治时间,$time是指文件添加时候的时间戳
相關推薦:php培訓
#以上是php如何實作禁止瀏覽器緩存的詳細內容。更多資訊請關注PHP中文網其他相關文章!