亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

「MISC」HTTP 緩存控制

RancherLabs / 3035人閱讀

摘要:但這兩個響應(yīng)頭不是為了控制緩存,而是為了確認(rèn)修改的資源的一致性。所以就產(chǎn)生了下面更加高級的緩存控制方法第三第四項方法。過期控制指定相對于請求時間的過期時間,以秒為單位。在的值前如果有則表示這是一個弱。表示要求上傳的文件在服務(wù)器上不存在。

現(xiàn)在的Web應(yīng)用越來越復(fù)雜,體驗越來越好。相應(yīng)的,資源文件也越來越大,如果能讓客戶端在資源沒更新的情況下,直接取用緩存的數(shù)據(jù),那么不僅資源加載的更快,服務(wù)器壓力更小,也為綠色地球做出了一份貢獻(xiàn)。

程序員向來是追求最優(yōu),在設(shè)法緩存靜態(tài)資源以后,大家又找到了一些方法來緩存動態(tài)生成的內(nèi)容。看來程序員們都是環(huán)境保護主義者(笑。

從HTTP/1.0-HTTP/1.1,一共產(chǎn)生了3種控制緩存的方法:

Expires(響應(yīng)頭,HTTP/1.0)

Cache-Control(響應(yīng)頭,HTTP/1.1)

- Last-Modified(響應(yīng)頭),If-Modified-Since(請求頭)
- Etag(響應(yīng)頭),If-None-Match(請求頭)

以上就是HTTP控制緩存的方法。

除了這些,在第二個還有If-Unmodified-Since,第三個還有If-Match。但這兩個響應(yīng)頭不是為了控制緩存,而是為了確認(rèn)修改的資源的一致性。之后會介紹。

HTTP/1.0 Expires
Expires: 

其中 的格式如下:

Date: ,    :: GMT
Example: Fri, 03 Nov 2017 03:22:39 GMT

當(dāng)設(shè)置了Expires后,客戶端在此日期之前都不會去請求服務(wù)器,而是直接從緩存中取。
不過這樣也有一個問題:如果完全不去請求服務(wù)器的話,在資源過期之前如果資源有更新,客戶端還是使用著之前的資源。所以就產(chǎn)生了下面更加高級的緩存控制方法(第三、第四項方法)。

不過還有一個方法能解決這個問題:將資源的Expires設(shè)置為一個足夠長的時間,而資源名為資源的Hash值,這樣資源更新了以后,也使用的是不同的名稱。那么就不存在上面的問題了。

HTTP/1.1 Cache-Control

Expires只能設(shè)置具體的日期,這樣的話,如果客戶端與服務(wù)器的時間不一致,會導(dǎo)致緩存時間不正確,還有可能直接導(dǎo)致緩存失效。

HTTP/1.1的Cache-Control配合If-Modified-Since或If-None-Match則完美的解決了這個問題。

Cache-Control比較常用的指令如下:

可緩存性

public: 響應(yīng)可被任意緩存

private: 響應(yīng)只能被客戶端緩存,不能被中間節(jié)點(代理、CDN等)緩存

no-cache: 中間節(jié)點必須向原始服務(wù)器去驗證緩存有效性。如果本身是原始服務(wù)器,則向自己確認(rèn)

only-if-cached: 中間節(jié)點直接使用已存在的緩存來確認(rèn)有效性,不向原始服務(wù)器確認(rèn)。若本身是原始服務(wù)器,則此指令沒有效果。

過期控制

max-age=: 指定相對于請求時間的過期時間,以秒為單位。

再驗證

must-revalidation: 緩存過期后必須向服務(wù)器確認(rèn)緩存是否有效

其他

no-store: 忽略緩存的存在,直接向服務(wù)器請求最新的資源。

上面列表中向服務(wù)器確認(rèn)緩存是否有效的技術(shù)手段就是下文介紹的 Last-Modified/If-Modified-SinceETag/If-None-Match

Last-Modified / If-Modified-Since
Last-Modified: 

Last-Modified頭是服務(wù)器告訴客戶端此資源的最后修改時間,客戶端則會將資源和這個時間都儲存起來。之后,根據(jù)Cache-Control的指令,如果需要同服務(wù)器確認(rèn)資源的有效性的時候則會將這個時間放在If-Modified-Since頭中,供服務(wù)器進(jìn)行比較,是返回304還是200。

If-Modified-Since頭只會在GET和HEAD請求被附加進(jìn)請求頭。

If-Unmodified-Since
If-Unmodified-Since: 

一般來說在PUT, POST等方法使用,表示該次請求更新的資源的日期為,如果服務(wù)器檢測到現(xiàn)存資源的日期不為(即已經(jīng)被其他的方式更新了),則會失敗并返回412。

ETag / If-None-Match
ETag: W/""
ETag: ""
If-None-Match: ""[, ""...]
If-None-Match: W/""[, ""]

如果將上面的 Last-Modified / If-Modified-Since 應(yīng)用在動態(tài)的數(shù)據(jù)上的話,基本上沒有可行性。那么就有了此方式的緩存。

在第一次請求的時候,服務(wù)器會附帶ETag頭。ETag的值是根據(jù)響應(yīng)的內(nèi)容來進(jìn)行生成的,一般來說是內(nèi)容(+其他一些標(biāo)識的)哈希值。之后,根據(jù)Cache-Control的指令,如果需要同服務(wù)器確認(rèn)資源的有效性的時候則會將這個etag_value放在If-None-Match頭中,供服務(wù)器進(jìn)行比較,是返回304還是200。

在ETag的值前如果有W/則表示這是一個弱Etag。弱ETag相等意味著這兩個內(nèi)容語義上是相等的,強ETag相等則表示內(nèi)容每一個字節(jié)都相等。

舉個弱ETag的例子:返回的數(shù)據(jù)中帶有l(wèi)og信息,而兩次返回的數(shù)據(jù)是相同的,log不同。

還有一種語法:If-None-Match: *,基本上用在PUT, POST等上,用于上傳。表示要求上傳的文件在服務(wù)器上不存在。

If-Match
If-Match: ""[, ""...]
If-Match: W/""[, ""]

對于GET, HEAD等請求,如果資源的ETag匹配上If-Match的值,則返回資源,否則返回412。
對于PUT, POST等請求,如果現(xiàn)有資源的Etag匹配上If-Match的值,那么進(jìn)行寫操作,否則失敗返回412。

----- 記得點贊 -----

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/51457.html

相關(guān)文章

  • Nacos系列:Nacos的Java SDK使用

    摘要:發(fā)布配置支持程序自動發(fā)布配置,創(chuàng)建和修改配置使用同一個方法,配置不存在則創(chuàng)建配置已存在則更新。示例源碼項目代碼已上傳至碼云和上,歡迎下載學(xué)習(xí)參考資料用戶指南的推薦閱讀系列歡迎來到的世界系列基于的注冊中心系列基于的配置中心 Maven依賴 Nacos提供完整的Java SDK,便于配置管理和服務(wù)發(fā)現(xiàn)及管理,以 Nacos-0.8.0 版本為例 添加Maven依賴: com.al...

    LinkedME2016 評論0 收藏0
  • IntegerCache

    摘要:類實際上是中中的緩存類,目的是節(jié)省內(nèi)存消耗,提高程序性能。而當(dāng)堆內(nèi)存中的對象存儲非常多時,就有可能造成內(nèi)存泄漏。使用頻率高創(chuàng)建對象也就越多,堆內(nèi)存中的對象也就越多,所以也就會可能發(fā)生上述中的內(nèi)存溢出等問題。 面試題:問以下代碼輸出的結(jié)果是多少? public class IntegerTest { @Test public void test() { ...

    yiliang 評論0 收藏0
  • Java 中的偽共享詳解及解決方案

    摘要:對于偽共享的傳統(tǒng)解決方案微信公眾號技術(shù)棧以上使用此方法的某個版本對偽共享做了優(yōu)化以下使用此方法中的解決方案中已經(jīng)提供了官方的解決方案,中新增了一個注解。 1. 什么是偽共享 CPU 緩存系統(tǒng)中是以緩存行(cache line)為單位存儲的。目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes。在多線程情況下,如果需要修改共享同一個緩存行的變量,就會無意中...

    BenCHou 評論0 收藏0

發(fā)表評論

0條評論

RancherLabs

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<