PHP下利用header()函數設定瀏覽器緩衝的代碼

來源:互聯網
上載者:User

這涉及到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");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.