首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 禁止瀏覽器緩存頁面的完整解決方案

     編輯:PHP 相關知識

頁面緩存雖能提升載入速度,但在某些場景下(如交易流程、即時數據展示)卻會造成嚴重問題。PHP 提供了多種 HTTP 標頭組合,能徹底禁用瀏覽器緩存,確保用戶每次請求都獲取最新內容。

核心標頭組合(兼容 HTTP/1.0 与 1.1)

在輸出任何內容前,呼叫以下 header() 即可:

<?php
// 1. 設定過期時間為過去日期(GMT)
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// 2. Last-Modified 設為當下,強制瀏覽器重新驗證
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

// 3. HTTP/1.1:禁止緩存且必須重新驗證
header("Cache-Control: no-cache, must-revalidate");

// 4. HTTP/1.0 相容:Pragma 標頭
header("Pragma: no-cache");
?>

進階版:針對訂單/支付頁面的強化策略

若需更嚴格防止用戶按「返回鍵」重送表單,可加入 no-store 並簡化過期時間:

<?php
header("Cache-Control: no-cache, must-revalidate, no-store"); // Firefox 需 no-store
header("Pragma: no-cache");
header("Expires: -1");
?>

搭配伺服器端 Session 判斷(如購物車為空即導向空車頁),即可徹底阻斷「回上頁」導致的重複下單風險。

適用場景速查

  • 會員登入/註冊、密碼重設頁
  • 訂單確認、付款結果頁
  • 即時行情、庫存查詢介面
  • API 介面回傳 JSON/XML 時

記得:所有 header() 必須在任何輸出(含空白、BOM)之前呼叫,否則會觸發「Headers already sent」錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved