php header 函式設定頁面Cache快取

2021-08-20 12:12:00 字數 3083 閱讀 6791

header("cache-control: public, max-age=604800, s-maxage=43200");

header()函式在php的使用很大,下面我來介紹利用它實現頁面快取的一些方法,但使用header前必須注意,在它之前不能任何輸出,包括空格。

手冊上,我們對於cache都是寫著如何設定,以便讓**不被cache:

而且在設定的時候還得注意在header前不能有輸出,否則header設定無效,但都沒有寫過,如何給頁面設定cache,雖然我們知道有一些辦法,比如 e-tag之類的。當然也有簡單的設定:

比如我們在輸出前,對內容進行md5,將它當成e-tag只要沒變化,就不會有影響。也有其他的方式:

1

2

3

4

$seconds_to_cache= 3600;

$ts=gmdate("d, d m y h:i:s", time() +$seconds_to_cache) ." gmt";

header("expires: $ts"); header("pragma: cache");

header("cache-control: max-age=$seconds_to_cache");

快取1小時,主要是過期時間得用gmdate來設定,而不是date,這個要注意,其他都差不多。maxage要和expire能夠對得上。

對於php產生的動態內容,只需要在內容輸出之前輸出強制快取的header即可,比如下面的**即要求瀏覽器快取檔案1個月:

1

2

3

4

5

6

7

8

<?php

header("cache-control: public");

header("pragma: cache");

$offset= 30*60*60*24;// cache 1 month

$expstr="expires: ".gmdate("d, d m y h:i:s", time() +$offset)." gmt";

header($expstr);

?>

對於靜態檔案,一般的伺服器都支援第3級快取狀態。要想達到第四級的快取效果,要麼像之前gzip壓縮那樣,用php外包一層,然後用php處理。要麼需 要伺服器端的支援,apache的乙個模組mod_expires支援給檔案新增expires header。把下面的**加入你的blog目錄下的.htaccess檔案,如果你的伺服器安裝了mod_expires模組,則將自動生效,等強 制快取乙個月,html文件快取10分鐘。如果該模組沒有安裝,也不會出錯。

1

2

3

4

5

6

7

8

9

10

expiresactive on

expiresbytype image/gif a2592000

expiresbytype image/jpeg a2592000

expiresbytype image/png a2592000

expiresbytype text/css a2592000

expiresbytype text/html a600

在這裡有mod_expires更詳細的文件和教程。不過我要說明的是,mod_expires在絕大多數伺服器上都沒安裝

php header 函式設定頁面Cache快取

header 函式在php的使用很大,下面我來介紹利用它實現頁面快取的一些方法,但使用header前必須注意,在它之前不能任何輸出,包括空格。手冊上,我們對於cache都是寫著如何設定,以便讓 不被cache 而且在設定的時候還得注意在header前不能有輸出,否則header設定無效,但都沒有寫過...

php header 函式詳解

一 作用 php只是以http協議將html文件的標頭送到瀏覽器,告訴瀏覽器具體怎麼處理這個頁面,至於傳送的內容則需要熟悉一下http協議了,與php無關了,可參照http www.w3.org protocols rfc2616 rfc2616。傳統的標頭一定包含下面三種標頭之一,並只能出現一次。...

php header函式詳解

常用例項 200 正常狀態 301 永久重定向,記得在後面要加重定向位址 location url 重定向,其實就是302 暫時重定向 header location 設定頁面304 沒有修改 顯示登入框,header www authenticate basic realm 登入資訊 echo 顯...