日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

http缓存机制和原理详解

發布時間:2025/4/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 http缓存机制和原理详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【背景】

http1.1




http1.1 是1997年開始使用的。


http是一種協議,用于傳輸瀏覽器發送的數據并接收由http server響應的數據。 瀏覽器就是解釋html語言等內容的。



http協議構成:

request 有client(瀏覽器)發送

起始行 first line:

? ? <method> <url> <version>

????as:?GET?/ex?i=mm_28347190_2425761_9313994?HTTP/1.1

首部 Header:

????filed:value

? ? ?as:?

????Host:www.baidu.comAccept-Encoding:gzip,?defaltReferer:?www.taobao.com/xxx?User-Aagent:?IE8...Cookie:xxxx.......

主體 Body:

? ?數據向POST方法的json數據等



responsed(由http server發送):


起始行 first line:

? ? <version> <code> <reason phrase>

????as:?HTTP/1.1?200?OK

首部 Header:

????filed:value

? ? ?as:?

????Expires:?Sat,?29?Oct?2016?13:59:01?GMTData:??Sat,?29?Oct?2016?13:44:01?GMTServer:?nginxContent-Type:?text/html;?charset=utf-8?Cache-Control:??max-age=900Content-Encoding:?gzipAge:?541X-Via:?1.1?xzai69:8?(Cdn?Cache?Server?V2.0),?1.1?sdta234:0?(Cdn?Cache?Server?V2Connection:?keep-alive

主體 Body:

? ?響應的數據內容html文本或者圖片或者css js




注意:

1 client和server端是相對的概念的。不是說client一定是瀏覽器 如elinks curl splider ...程序

2 C/S 和 B/S架構的區別。主要是理解B/S架構B是指Broswer瀏覽器,是指將獨立應用程序的實現放在瀏覽器中。比如瀏覽器中的office不用獨立的office軟件就可以打開word excel文檔。

3 其中一個提高網頁瀏覽速度的技術是緩存技術。比如一些網頁游戲,在開始前都會加載一會就是將一些元素載入到瀏覽器中緩存起來。加快速度。



【緩存技術】



注意:

1 cache 中的private cache和public cache是相對的。對應存入自己電腦中的cache是只對user1可以使用的,user2 是不能使用的。所以這個緩存就是private私有緩存。 ?正向代理的緩存對于user1 和user2 都是可以使用的,就能同時加快user1 和user2 的速度,這個就是public cache。

2 緩存最終不是最權威的資源,會所有失效的必要性。所有要重點探索和設定的緩存時間。




【http 1.0緩存機制】

C ---> S


第一次 ?client向serve發起一個request,server 向client respond回應內容的頭部中加入一個Expire(1.0版本中唯一一個控制緩存的頭部和策略)過期時間。?


第二次 client想server發起請求的時候,第一種情況:如果內容在過期時間之內,就會使用本地的緩存。第二種情況:如果超過了過期時間,重新發起請求,并從Server端獲取數據(不管數據是否有更新)



缺點: 在第二的第二種情況在,client想server端發起的請求時,如果server中的數據沒有更新也被完整的響應一份數據到client端。這樣就浪費了帶寬資源。和服務器的響應資源。


所以引入了http1.1 版本,有一個詢問的機制條件式判斷,請求的時候可以發送一個頭部為If-Modify-Since到Server端。自動那個時候,內容是否有更新呢? 如果沒更新就返回304的響應碼,Not-Modify。



【http 1.1緩存機制】

豐富的頭部信息控制緩存策略


1、緩存相關的HTTP首部


HTTP協議提供了多個首部用以實現頁面緩存及緩存失效的相關功能,這其中最常用的有:

(1)Expires:用于指定某web對象的過期日期/時間,通常為GMT格式;一般不應該將此設定的未來過長的時間,一年的長度對大多場景來說足矣;其常用于為純靜態內容如JavaScripts樣式表或圖片指定緩存周期;

(2)Cache-Control:用于定義所有的緩存機制都必須遵循的緩存指示,這些指示是一些特定的指令,包括public、private、no-cache(表示可以存儲,但在重新驗正其有效性之前不能用于響應客戶端請求)、no-store、max-age、s-maxage以及must-revalidate等;Cache-Control中設定的時間會覆蓋Expires中指定的時間;

????public: 定義為共有的緩存

????private: 私有的緩存

????no-cache: 存儲但必須校驗

????no-store:不存儲

????max-age:緩存最大時長

????s-maxage:只能用于公共緩存或者共享式緩存 中指定最大緩存時長

????must-revalidate:必須重新校驗

????

????

(3)Etag:響應首部,用于在響應報文中為某web資源定義版本標識符;(解決 時間戳對比 秒級別的粗糙,無法判斷文件是否更新,用于驗證秒一下級別的更新)


條件時請求判斷機制:

(4)Last-Mofified:響應首部,用于回應客戶端關于Last-Modified-Since或If-None-Match首部的請求,以通知客戶端其請求的web對象最近的修改時間;


(5)If-Modified-Since:條件式請求首部,如果在此首部指定的時間后其請求的web內容發生了更改,則服務器響應更改后的內容,否則,則響應304(not modified);

(6)If-None-Match:條件式請求首部;web服務器為某web內容定義了Etag首部,客戶端請求時能獲取并保存這個首部的值(即標簽);而后在后續的請求中會通過If-None-Match首部附加其認可的標簽列表并讓服務器端檢驗其原始內容是否有可以與此列表中的某標簽匹配的標簽;如果有,則響應304,否則,則返回原始內容;

(7)Vary:響應首部,原始服務器根據請求來源的不同響應的可能會有所不同的首部,最常用的是Vary: Accept-Encoding,用于通知緩存機制其內容看起來可能不同于用戶請求時Accept-Encoding-header首部標識的編碼格式;

(8)Age:緩存服務器可以發送的一個額外的響應首部,用于指定響應的有效期限;瀏覽器通常根據此首部決定內容的緩存時長;如果響應報文首部還使用了max-age指令,那么緩存的有效時長為“max-age減去Age”的結果;



?Age(響應標頭,HTTP1.1)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

Age標頭,對于原始服務器來說,用于指明,當前資源被生成了多久,即存活期.而對于一個緩存代理服務器來說,它表示緩存副本,被緩存了多久.緩存代理服務器,必須生成Age頭.其值以秒為單位.且可能為負值.

壽命:即響應的壽命,指從原始服務器發出實體后所經歷的時間,或者是重新驗證,證明某緩存仍處于最新狀態(可信賴)之后,所經歷的時間. 參考響應頭中的 Age,其單位是秒.






【實踐-分析-理解】


谷歌瀏覽器 f5(ctrl +r) 和 ctrl+f5的區別



f5是刷新,但是不徹底: 會在請求的是后加上?

  • If-Modified-Since: ?和 max-age:0 ?


  • 請求的時候問 server你是否有更新,有如server 查看更新時間一樣,就返回304 表示沒有更新。



    ctrl+f5是強制更新,刷新頁面,server返回的一定是200(資源存在的前提)。 會在http的請求頭加上

    Cache-Control: no-cache




    概念解釋如下:

    Cache-Control ?no-cache — 強制每次請求直接發送給源服務器,而不經過本地緩存版本的校驗。這對于需要確認認證應用很有用(可以和public結合使用),或者嚴格要求使用最新數據 的應用(不惜犧牲使用緩存的所有好處)?

    Pragma 當"no-cache"出現在請求消息中時,應用程序應當向原始服務器推送此請求,即使它已?

    經在上次請求時已經緩存了一份拷貝。這樣將保證客戶端能接收到最權威的回應。它也用來?

    在客戶端發現其緩存中拷貝不可用或過期時,對拷貝進行強制刷新。?

    cache-control?

    max-age>0 時 直接從游覽器緩存中 提取?

    max-age<=0 時 向server 發送http 請求確認 ,該資源是否有修改?

    有的話 返回200 ,無的話 返回304.?

    ?


    轉載于:https://blog.51cto.com/cuidehua/1867220

    總結

    以上是生活随笔為你收集整理的http缓存机制和原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 俄罗斯乱妇 | 国产精品美女主播 | 青娱乐99| 欧美性猛交久久久乱大交小说 | 毛片看看 | 成人精品在线 | а√天堂8资源在线官网 | 福利视频一区二区 | 免费久草视频 | 欧美国产片 | 9l视频自拍蝌蚪9l视频 | 男人午夜剧场 | 99小视频 | 在线观看免费人成视频 | 国内性视频 | 男女福利视频 | 国产破处在线 | 韩日一级片 | 国产18禁黄网站免费观看 | 欧美激情一区 | 福利一区在线观看 | 欧美黑人巨大xxx极品 | 在线能看的av网站 | 99久久精品一区 | 黄色成人一级片 | 黄色在线观看av | 色妞网 | 国产熟女一区二区丰满 | av电影中文字幕 | 麻豆自拍视频 | 久久亚洲区 | 日韩av网站在线 | 午夜成年人| 91九色视频 | 国产绿帽刺激高潮对白 | 欧美变态口味重另类在线视频 | 色国产精品 | 亚洲黄色激情 | 久久成年人视频 | jizz性欧美17 | 日韩第九页| 天天看av | 91瑟瑟| 日本精品成人 | 午夜激情福利在线 | 日韩毛片一级 | 久久av一区二区三区亚洲 | 三级三级久久三级久久18 | 天天躁狠狠躁狠狠躁夜夜躁68 | caoporn免费在线 | 日韩在线播放av | 国产午夜精品一区二区理论影院 | 美女野外找人搭讪啪啪 | 91夜色| 欧美高清一区二区 | 天天综合久久 | 精品成人久久 | 国产色无码精品视频国产 | 精品国产乱码久久久久 | 欧美另类videosbestsex日本 | 91福利在线观看视频 | 和美女啪啪 | 亚洲欧美精品一区二区三区 | 人人爽人人 | 欧美日本在线播放 | 草草影院国产 | 女av在线| 亚州av综合色区无码一区 | 名人明星三级videos | 成人av一区二区三区在线观看 | 色老头在线视频 | 扒丝袜| 大黑人交xxx极品hd | 影音先锋欧美资源 | 狠狠躁日日躁夜夜躁2022麻豆 | 人人草网站 | 欧美黄片一区 | 一本一道人人妻人人妻αv 九一在线视频 | 男女无遮挡做爰猛烈视频 | 午夜精品久久久久久久91蜜桃 | 久久黄色av | 另类少妇人与禽zozz0性伦 | 日本不卡一二三 | 呦呦精品| 免费黄色网址在线观看 | 加勒比波多野结衣 | 毛片基地站 | 四虎影视最新网址 | 亚洲国产精品狼友在线观看 | 很污很黄的网站 | 男生和女生靠逼视频 | 中文字幕一区二区三区精彩视频 | 国产精品美乳在线观看 | 美日韩精品一区二区 | 国产人妻aⅴ色偷 | 久久一热 | 一级一片免费看 | 免费激情网址 | 日本中文字幕一区 |