1. 程式人生 > >http cache-control 指令的設定以及意義

http cache-control 指令的設定以及意義

轉載地址 :    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control

    http://www.cnblogs.com/yuyii/archive/2008/10/16/1312238.html

       http://www.cnblogs.com/jsonzheng/p/3782215.html

    http://httpd.apache.org/docs/current/mod/mod_expires.html

幾篇很精彩的文章

例項:

通過HTTP的META設定expires和cache-control
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />
上述設定僅為舉例,實際使用其一即可。這樣寫的話僅對該網頁有效,對網頁中的圖片或其他請求無效,並不會做任何cache。
這樣客戶端的請求就多了,儘管只是檢查Last-modified狀態的東西,但是請求一多對瀏覽速度必定有影響。
如果要對檔案新增cache可以通過apache的mod_expire模組,寫法為
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
</IfModule>
記得ExpiresActive設為On,我起先沒設定On,似乎怎樣YSlow都查不到快取機制。這樣新增的話就是預設所有的。
如果要針對個別MIME型別則可以:
ExpiresByType image/gif "access plus 5 hours 3 minutes"
見 Apache Module mod_expires
另外,當點選瀏覽器上的重新整理,客戶端傳送的請求中均是max-age=0,表示validate操作,傳送請求到伺服器 要求檢查cache,再更新cache,一般得到的是304 Not Modified,表示沒變動。

語法

Edit

指令不區分大小寫,並且具有可選引數,可以用令牌或者帶引號的字串語法。多個指令以逗號分隔。

快取請求指令

客戶端可以在HTTP請求中使用的標準 Cache-Control 指令。

Cache-Control: max-age=<seconds>
Cache-Control: max-stale[=<seconds>]
Cache-Control: min-fresh=<seconds>
Cache-control: no-cache 
Cache-control: no-store
Cache-control: no-transform
Cache-control: only-if-cached

快取響應指令

伺服器可以在響應中使用的標準 Cache-Control 指令。

Cache-control: must-revalidate
Cache-control: no-cache
Cache-control: no-store
Cache-control: no-transform
Cache-control: public
Cache-control: private
Cache-control: proxy-revalidate
Cache-Control: max-age=<seconds>
Cache-control: s-maxage=<seconds>

 拓展Cache-Control指令

拓展快取指令不是HTTP快取標準的一部分,使用前請注意檢查 相容性

Cache-control: immutable 
Cache-control: stale-while-revalidate=<seconds>
Cache-control: stale-if-error=<seconds>

常見的指令:

Edit

可快取性

public
表明響應可以被任何物件(包括:傳送請求的客戶端,代理伺服器,等等)快取。
private
表明響應只能被單個使用者快取,不能作為共享快取(即代理伺服器不能快取它)。
no-cache
 強制所有快取了該響應的快取使用者,在使用已儲存的快取資料前,傳送帶驗證器的請求到原始伺服器
only-if-cached
表明如果快取存在,只使用快取,無論原始伺服器資料是否有更新。

到期

max-age=<seconds>
設定快取儲存的最大週期,超過這個時間快取被認為過期(單位秒)。與Expires相反,時間是相對於請求的時間。
s-maxage=<seconds>
覆蓋max-age 或者 Expires 頭,但是僅適用於共享快取(比如各個代理),並且私有快取中它被忽略。
max-stale[=<seconds>]
表明客戶端願意接收一個已經過期的資源。 可選的設定一個時間(單位秒),表示響應不能超過的過時時間。
min-fresh=<seconds>
表示客戶端希望在指定的時間內獲取最新的響應。
stale-while-revalidate=<seconds> 
...
stale-if-error=<seconds> 
...

重新驗證和重新載入

must-revalidate
快取必須在使用之前驗證舊資源的狀態,並且不可使用過期資源。
proxy-revalidate
與must-revalidate作用相同,但它僅適用於共享快取(例如代理),並被私有快取忽略。
immutable 
表示響應正文不會隨時間而改變。資源(如果未過期)在伺服器上不發生改變,因此客戶端不應傳送重新驗證請求頭(例如If-None-Match或If-Modified-Since)來檢查更新,即使使用者顯式地重新整理頁面。在Firefox中,immutable只能被用在 https:// transactions. 有關更多資訊,請參閱這裡.

其他

no-store
快取不應儲存有關客戶端請求或伺服器響應的任何內容。
no-transform
不得對資源進行轉換或轉變。Content-Encoding, Content-Range, Content-Type等HTTP頭不能由代理修改。例如,非透明代理可以對影象格式進行轉換,以便節省快取空間或者減少緩慢鏈路上的流量。 no-transform指令不允許這樣做。

示例Edit

禁止快取

傳送如下指令可以關閉快取。此外,可以參考Expires 和 Pragma 標題。

Cache-Control: no-cache, no-store, must-revalidate

快取靜態資源

對於應用程式中不會改變的檔案,你通常可以在傳送響應頭前新增積極快取。這包括例如由應用程式提供的靜態檔案,例如影象,CSS檔案和JavaScript檔案。另請參閱Expires標題。

Cache-Control:public, max-age=31536000

相關推薦

http cache-control 指令設定以及意義

轉載地址 :    https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cache-Control     http://www.cnblogs.com/yuyii/archive/2008/10/16/131

設定http響應頭Cache-Control及Pragma,增加CDN cache命中率

最近在折騰CDN cache命中率。然後就發現在偽靜態環境下,cdn快取命中率非常低,一番折騰後發現如果源站的http頭部包含一些不快取的資訊,那麼CDN”也許“會相應的繼承源站發出的HTTP狀態。通常喜歡用軍哥LNMP安裝包的朋友會發現,在動態及偽靜態的環境中,HTTP

<meta>標簽http-equiv屬性中pragma cache-control expires三者的關系。

lan pro ont style rfc toc color control header 1 <meta http-equiv="pragma" content="no-cache"> 2 <meta http-equiv="cache-contro

寫給後端程序員的HTTP緩存原理介紹--怎樣決定一個資源的Cache-Control策略呢

服務 tle 當下 程序員 max-age pri bad ref 網絡 通過Internet獲取資源既緩慢,成本又高。為此,Http協議裏包含了控制緩存的部分,以使Http客戶端可以緩存和重用以前獲 取的資源,從而優化性能,提升體驗。雖然Http中關於緩存控制的部分,隨著

http指令解析以及儲存

在配置檔案一節中已經說明了可能會在ngx_conf_handler中遞迴的解析塊中的指令,而這些塊中的指令的解析則是由Ngx_http_core_module來完成的,也就是說當ngx_http_module模組在解析完main的指令以後,如果遇到了server或者location指令的時候

淺談http中的Cache-Control

前言 我們用http訪問時,會先發送一個請求,之後伺服器返回一個應答,在Chrome的偵錯程式(按F12或右擊選擇檢查)中展現了整個過程: 第一部分General是概要,包含請求地址,請求方式,狀態碼,伺服器地址以及Referrer 策略。 第二部分是應答頭部

http協議——cache-Control

http協議屬於應用層,用於客戶端和服務端之間的通訊,通過請求和響應的交換達成通訊。它是不儲存狀態的協議,即無狀態協議,每當有新的請求傳送時,都會有新的響應產生。 1.通用首部欄位 1)cache-Control 操作快取的工作機制 cache-Control的指令用於

Meta http-equiv屬性與HTTP頭的Expires中(Cache-control)詳解

一、概述 A、http-equiv顧名思義,相當於http的檔案頭作用,它可以向瀏覽器傳回一些有用的資訊,以幫助正確和精確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個引數的變數值。 B、Cache-control用於控制HTTP快取

HTTP訊息頭中的“Cache-control”控制網頁的快取

網頁的快取是由HTTP訊息頭中的“Cache-control”來控制的,常見的取值有private、no- cache、max-age、must-revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況: (1) 開啟新視窗 值為pri

Http頭介紹:Expires,Cache-Control,Last-Modified,ETag

快取對於web開發有重要作用,尤其是大負荷web系統開發中。 快取分很多種:伺服器快取,第三方快取,瀏覽器快取等。其中瀏覽器快取是代價最小的,因為瀏覽器快取依賴的是客戶 端,而幾乎不耗費伺服器端的資源。 讓瀏覽器做快取需要給瀏覽器傳送指定的Http頭,告訴瀏覽器快取多

http expires cache-control last-modified if-modified-since

關於 Cache-Control: max-age=秒 和 Expires Expires = 時間,HTTP 1.0 版本,快取的載止時間,允許客戶端在這個時間之前不去檢查(發請求) max-age = 秒,HTTP 1.1版本,資源在本地快取多少秒。 如果max-age

http協議報頭Cache-Control使用

最近,複習了下http協議。這裡主要回憶分享,學習下報頭中的Cache-Control的使用情況。 和Cache-Control一起使用的報頭屬性還有:Last-Modified: [UTC time]、ETag: [custom flag] 首先說明下Cache-Cont

005-優化web請求一-gzip壓縮、http緩存控制和緩存校驗[Pragma、Expires、Cache-Control、max-age、Last-Modified、用戶刷新訪問、避免過度304]

無法 新鮮度 開發者模式 請求報文 XML 自定義 server clas 存在   優化Web應用的典型技術:緩存控制頭信息、Gzip、應用緩存、ETag、反應型技術【異步方法調用和WebSocket】 一、模板緩存 spring.thymeleaf.cache=

HTTP頭的Expires與Cache-control

1.概念 Cache-control用於控制HTTP快取(在HTTP/1.0中可能部分沒實現,僅僅實現了Pragma: no-cache) 資料包中的格式: Cache-Control: cache-directive cache-directive可以為以下: request時用到: | "no-cach

【轉載】瀏覽器緩存詳解:expires cache-control last-modified

導致 lang -c csdn 判斷 屬性 lan -m load 最近在對CDN進行優化,對瀏覽器緩存深入研究了一下,記錄一下,方便後來者 畫了一個草圖: 每個狀態的詳細說明如下: 1、Last-Modified 在瀏覽器第一次請求某一個URL時,服務器端的返回

愛創課堂每日一題第二十三天- Expires和Cache-Control

前端 前端學習 前端入門Expires要求客戶端和服務端的時鐘嚴格同步。HTTP1.1引入Cache-Control來克服Expires頭的限制。如果max-age和Expires同時出現,則max-age有更高的優先級。 Cache-Control: no-cache, private, max

Cache-Control官方文檔

span greate print -a com -c otherwise same ise https://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-25#page-21 5.2. Cache-Control

Why use Cache-Control header in request?

form and over ssa response 裏的 部分 term 並不是 本地緩存也是緩存代理的一部分。 請求時使用Cache-Control 表示緩存的使用策略。 請求頭裏的no-cache表示瀏覽器不想讀緩存,並不是說沒有緩存。一般在瀏覽器按ctrl+F5

etag cache control

ffi 變化 con 無法 響應 表示 指令 cache ref https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl

編譯安裝Apache HTTP Server 2.4.23 以及配置HTTP/HTTPS反向代理

chan .so har 替換 quest pre and for 大小 編譯安裝Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理一,依賴軟件: 1.1 GCC和C++編譯器 GCC C++ Compiler 1.1.1 如果沒有安