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

HTTP 緩存控制全攻略:Cache-Control、Pragma、Expires 與 Meta 標籤詳解

     編輯:Java 相關知識

HTTP 響應頭緩存關鍵字段

Header版本常用值說明
Cache-ControlHTTP/1.1no-cache, no-store, public, private, max-age, must-revalidate主流緩存控制指令
PragmaHTTP/1.0no-cache向下兼容,僅請求頭有效
ExpiresHTTP/1.0GMT 日期絕對過期時間,受客戶端時鐘影響
Last-ModifiedHTTP/1.0GMT 日期資源最後修改時間,配合 If-Modified-Since
ETagHTTP/1.1實體標籤強/弱驗證器,配合 If-None-Match

Cache-Control 常用指令詳解

  • no-cache:強制向源服務器驗證(可配合 ETag),不直接使用緩存
  • no-store:絕對禁止緩存(含磁盤/內存),敏感數據必設
  • public:允許瀏覽器、代理服務器緩存
  • private:僅允許瀏覽器終端緩存,代理不可緩存
  • max-age=秒數:相對過期時間,優先級高於 Expires
  • must-revalidate:過期後必須回源驗證,不可使用陈旧副本

Servlet 動態設置緩存策略範例

response.setDateHeader("Last-Modified", System.currentTimeMillis());
response.setDateHeader("Expires", System.currentTimeMillis() + 3600_000); // 1 小時
response.setHeader("Cache-Control", "public, max-age=3600");
// 禁止緩存組合拳
// response.setHeader("Pragma", "no-cache");
// response.setDateHeader("Expires", 0);
// response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

HTML Meta 標籤模擬 HTTP 頭(適用於無法控制服務器響應頭的靜態頁)

<head>
  <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="Expires" content="0">
</head>

注意:Meta 標籤僅被瀏覽器識別,代理服務器不會解析,真正的緩存控制請以 HTTP Header 為準。

Meta 標籤其他常用用法

屬性用途範例
name="keywords"SEO 關鍵詞<meta name="keywords" content="Java,教程">
name="description"SEO 描述<meta name="description" content="Java 緩存控制指南">
name="viewport"移動端適配<meta name="viewport" content="width=device-width, initial-scale=1">
http-equiv="refresh"定時跳轉<meta http-equiv="refresh" content="5;url=/target">
http-equiv="X-UA-Compatible"IE 渲染模式<meta http-equiv="X-UA-Compatible" content="IE=edge">
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved