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 顯...