日韩性视频-久久久蜜桃-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缓存机制和原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 蜜臀尤物一区二区三区直播 | 韩国无码av片在线观看网站 | 欧美另类在线视频 | 久久精品人妻一区二区三区 | 国产伦精品免费视频 | 狠狠躁天天躁夜夜躁婷婷 | 日本一二三区视频 | 蜜芽一区二区 | 成人免费看黄 | 成人免费超碰 | 亚洲av日韩av在线观看 | 男人的天堂2019 | 国产午夜在线一区二区三区 | 高清不卡av| 国产精品久久久久久久妇 | 国产一区二区久久精品 | 国产伦精品一区二区免费 | 午夜爽爽爽| 91精品美女 | 亚洲精品一区二区三 | 国内精久久久久久久久久人 | 欧美日韩欧美日韩在线观看视频 | 无码人妻丰满熟妇区bbbbxxxx | 人妻视频一区二区 | 国产视频九色蝌蚪 | 4438x全国最大成人 | 最新的黄色网址 | 性色av一区二区三区免费 | 韩国成人在线视频 | 狠狠爱夜夜操 | 日本簧片在线观看 | 久久久久国产综合av天堂 | 色呦呦国产 | a级在线观看 | 国产成人三级在线 | 动漫涩涩免费网站在线看 | 日韩在线色 | 波多野结衣成人在线 | 免费美女毛片 | 丁香啪啪综合成人亚洲 | 午夜影院啊啊啊 | 不卡在线视频 | 亚洲 欧美 中文字幕 | www.国产com| av高清免费 | 女女互慰吃奶互揉调教捆绑 | www.com久久| 国产伦精品一区二区三区妓女 | 日韩人妻无码精品久久免费 | 在线视频1卡二卡三卡 | 欧美成人生活片 | 欧美日韩123区 | 久久久久久久久久久综合 | 亚洲爆乳无码精品aaa片蜜桃 | 在线国产网站 | 99国产精品久久久久久久成人 | 成人精品水蜜桃 | 精品一区二区在线免费观看 | 日本一级片在线观看 | 欧美日韩中文在线 | 男女污污视频在线观看 | 永久免费在线播放 | 国产tv在线观看 | 午夜xxx | 婷婷射 | 性一交一乱一伧老太 | 夜色综合| 91夫妻论坛 | 日韩精品一区二区三区电影 | 久久免费在线观看 | 青青成人网 | 日本中文字幕二区 | 91视频国产精品 | 一级做a免费视频 | 在线免费av网 | 噜噜色综合 | 韩国三级做爰视频 | 国产日韩精品一区二区三区 | 日韩精品一区二区三区网站 | 亚洲一区二区三区高清 | 无限资源日本好片 | 91精品一区二区三区综合在线爱 | 制服诱惑一区二区 | 97香蕉碰碰人妻国产欧美 | 国产一区二区在线看 | 国产视频资源 | 91视频99| 性猛交富婆╳xxx乱大交天津 | 欧美日韩免费在线 | 亚洲精品成人在线视频 | 水蜜桃久久 | 操操操视频 | 开心成人激情 | 久久久www免费人成人片 | 草在线| 成人免费毛片观看 | 国产美女喷水视频 | 成人h动漫精品一区二区无码 | 日韩在线导航 |