程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP高級應用:header()函數設置浏覽器緩存

PHP高級應用:header()函數設置浏覽器緩存

編輯:關於PHP編程

PHP高級應用之header()函數設置浏覽器緩存

這涉及到4種頭標類型:
Last-Modified(最後修改時間);
Expires(有效期限);
Pragma(編譯指示);
Cache-Control(緩存控制);
前三個頭標屬於HTTP1.0標准。頭標Last-Modified使用UTC日期時間值。如果緩存系統發現Last-Modified值比頁面緩存版本的更接
近當前時間,他就知道應該使用來自服務器的新版本。

Expires 表明了緩存版本何時應該過期(格林威治標准時間)。把它設置為一個以前的時間就會強制使用服務器上的頁面。

Pragma生命了頁面數據應該如何被處理。可以這樣避免對頁面進行緩存:

header("Pragma:no-cache");

Cache-Co0ntrol 頭標是在HTTP1.1裡添加的,能夠實現更細致的控制(還應該繼續使用HTTP1.0頭標)。Cache-Control的設置有
很多,如下表:
指令                   含義
public                 可以在任何地方緩存
private             只能被浏覽器緩存
no-cache             不能在任何地方緩存
must-revalidate     緩存必須檢查更新版本
proxy-revalidate     代理緩存必須檢查更新版本
max-age             內容能夠被緩存的時期,以秒表示
s-maxage             覆蓋共享緩存的max-age設置
下面實例利用header()設置浏覽器的緩存:
<?php # Script 2.7 - view_tasks.php
// Connect to the database:
$dbc = @mysqli_connect (localhost, username, password, test) OR die (<p>Could not connect to the database!</p></body></html>);
// Get the latest dates as timestamps:
$q = SELECT UNIX_TIMESTAMP(MAX(date_added)), UNIX_TIMESTAMP(MAX(date_completed)) FROM tasks;
$r = mysqli_query($dbc, $q);
list($max_a, $max_c) = mysqli_fetch_array($r, MYSQLI_NUM);
// Determine the greater timestamp:
$max = ($max_a > $max_c) ? $max_a : $max_c;
// Create a cache interval in seconds:
$interval = 60 * 60 * 6; // 6 hours
// Send the header:
header ("Last-Modified: " . gmdate (r, $max));
header ("Expires: " . gmdate ("r", ($max $interval)));
header ("Cache-Control: max-age=$interval");
?>

1、連接數據庫後獲取數據表中最新的日期值date_added,date_completed,用UNIX_TIMESTAMP()函數將返回值轉化為整數然後獲取最大值賦予$max。

2、定義一個合理緩存時間。
$interval=60*60*6
合理值屈居於頁面本身、訪問者的數量和頁面的更新頻率,以上代碼為6個小時。

3、發送Last-Modified頭標。
header("Last-Modified:".gmdate("r",($max $interval)));
gmdate()函數使用了參數"r"時,會根據HTTP規范返回相應的日期格式。

4.設置Expires頭標。
header ("Expires: " . gmdate ("r", ($max $interval)));

5.設置Cache_Control頭標。
header ("Cache-Control: max-age=$interval");

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved