成全视频在线观看免费高清,国产亚洲欧洲精品,成年人午夜免费视频,久久机热综合久久国产

當前位置:第一POS網 > pos機知識點 >

瀏覽器緩存機制post

瀏覽:159 發布日期:2023-04-28 00:00:00 投稿人:佚名投稿

1、瀏覽器緩存機制

有dns的地方,就有緩存。瀏覽器、操作系統、Local DNS、根域名服務器,它們都會對DNS結果做一定程度的緩存。

DNS查詢過程如下:

首先搜索瀏覽器自身的DNS緩存,如果存在,則域名解析到此完成。
如果瀏覽器自身的緩存里面沒有找到對應的條目,那么會嘗試讀取操作系統的hosts文件看是否存在對應的映射關系,如果存在,則域名解析到此完成。
如果本地hosts文件不存在映射關系,則查找本地DNS服務器(ISP服務器,或者自己手動設置的DNS服務器),如果存在,域名到此解析完成。
如果本地DNS服務器還沒找到的話,它就會向根服務器發出請求,進行遞歸查詢。

瀏覽器本地緩存失效后,瀏覽器會向CDN邊緣節點發起請求。類似瀏覽器緩存,CDN邊緣節點也存在著一套緩存機制。CDN邊緣節點緩存策略因服務商不同而不同,但一般都會遵循http標準協議,通過http響應頭中的
Cache-control: max-age 的字段來設置CDN邊緣節點數據緩存時間。

當瀏覽器向CDN節點請求數據時,CDN節點會判斷緩存數據是否過期,若緩存數據并沒有過期,則直接將緩存數據返回給客戶端;否則,CDN節點就會向服務器發出回源請求,從服務器拉取最新數據,更新本地緩存,并將最新數據返回給客戶端。 CDN服務商一般會提供基于文件后綴、目錄多個維度來指定CDN緩存時間,為用戶提供更精細化的緩存管理。

CDN 優勢
CDN節點解決了跨運營商和跨地域訪問的問題,訪問延時大大降低。
大部分請求在CDN邊緣節點完成,CDN起到了分流作用,減輕了源服務器的負載。

http請求報文(request)
請求行
請求方法  空格  URL 空格  協議版本 回車符 換行符
請求頭(通用信息頭、請求頭、實體頭)
頭部字段名 冒號  值  回車鍵 換行符
...
頭部字段名 冒號  值  回車鍵 換行符
空行
回車符   換行符
實體主體(只有post請求有)
主體

http響應報文(response)
狀態行
協議版本  空格  狀態碼 空格  狀態碼描述 回車符 換行符
響應頭部
頭部字段名 冒號  值   回車符 換行符
...
頭部字段名 冒號  值   回車符 換行符
空行
回車符   換行符
響應正文
正文

瀏覽器初次向服務器發起請求后拿到請求結果,會根據響應報文中HTTP頭的緩存標識,決定是否緩存返回的結果,是則將請求結果和緩存標識存入瀏覽器緩存中

瀏覽器每次發起請求,都會現在瀏覽器緩存中查找該請求的結果以及緩存標識
瀏覽器                瀏覽器緩存        服務器

——————第一次發起http請求——————>

<——沒有該請求的緩存結果和緩存標識————

——————————————發起http請求——————————————>

<——————————返回該請求結果和緩存規則————————————

——將請求結果和緩存標識存入瀏覽器緩存——>

強制緩存就是向瀏覽器緩存查找結果,并根據該結果的緩存規則來決定是否使用該緩存結果的過程

強制緩存的情況分為三種:
1、不存在該緩存結果和緩存標識,強制緩存失效,直接向服務器發起請求
2、存在該緩存結果和緩存標識,但結果已經失效,強制緩存失效,使用協商緩存
3、存在該緩存結果和緩存標識,且該結果沒有失效,強制緩存生效,直接返回該結果

控制強制緩存的字段:Expires,Cache-Control

Expires 是 HTTP/1.0 控制緩存的字段,值為服務器返回該請求的結果緩存時間
即再次發送請求是,客戶端時間 小于 Expires的值,直接使用緩存結果

Cache-Control 是HTTP/1.1的規則,主要用于控制網頁緩存,主要取值為:
public:所有的內容都緩存(客戶端和代理服務器都可以緩存)
private:所有內容只有客戶端可以緩存(默認值)
no-cache:客戶端緩存內容,但是是否使用緩存則需要經過協商緩存來驗證決定
no-store:即不使用強制緩存,也不使用協商緩存
max-age=xxx:緩存內容將在xxx秒后失效

Expires 是一個絕對值
Cache-Control 中 max-age 是相對值,解決了 Expires時期 服務端與客戶端 可能出現時間差的問題

注:Expires和Cache-Control同時存在時,只有Cache-Control生效

協商緩存就是強制緩存失效后,瀏覽器攜帶緩存標識向服務器發起請求,由服務器根據緩存標識決定是否使用緩存的過程

協商緩存的兩種情況:
1、協商緩存生效,返回304,繼續使用緩存
過程:
瀏覽器                 瀏覽器緩存     服務器

————————發起http請求————————>

<——該請求的緩存結果失效,只返回緩存標識——

————————攜帶該資源的緩存標識,發起http請求————————>

<—————————————304,該資源無更新————————————

——————獲取該請求的緩存結果——————>

<——————返回該請求的緩存結果——————

2、協商緩存失敗,返回200和請求結果
過程:
瀏覽器                 瀏覽器緩存     服務器

————————發起http請求————————>

<——該請求的緩存結果失效,只返回緩存標識——

————————攜帶該資源的緩存標識,發起http請求————————>

<————————200,資源已更新,重新返回請求和結果———————

——將該請求結果和緩存標識存入瀏覽器緩存中—>

協商緩存的標識也是在響應報文的HTTP頭中和請求結果一起返回給瀏覽器的

控制協商緩存的字段:
(1) Last-Modified/If-Modified-Since:Last-Modified是服務器響應請求是,返回該資源文件在服務器最后被修改的時間;If-Modified-Since再次發起請求時,攜帶上次返回的Last-Modified的值,服務器將該字段值與該資源最后修改時間對比,決定是否用緩存
(2)Etag/If-None-Match:Etag服務器響應請求時,返回當前資源文件的一個唯一標識,由服務器生成之;If-None-Match是再次發起請求時,攜帶上次返回的唯一標識Etag的值,服務器收到后,將該字段值與該資源在服務器上的Etag對比,一致 則返回304,否則返回200

注:Etag/If-None-Match優先級高于Last-Modified/If-Modified-Since,同時存在時只有Etag/If-None-Match生效

瀏覽器緩存分為:內存緩存 和 硬盤緩存

內存緩存特性:
(1)快速讀取:內存緩存會將編譯解析后的文件,存入該進程的內存中,便于下次運行時快速讀取
(2)時效性:一旦關閉進程,進程內存清空

硬盤緩存特性:
永久性:直接寫入硬盤文件中
復雜、緩慢:讀取緩存對該緩存存放的硬盤文件進行I/O操作,重新解析

from memory cache:使用內存中的緩存

from disk cache:使用硬盤中的緩存

瀏覽器讀取順序:memory ——> disk

瀏覽器將js和圖片等文件解析執行后直接存入內存緩存中,F5刷新頁面時,from memory cache(使用內存中的緩存)
css文件存入硬盤中,F5刷新頁面時,from disk cache(使用硬盤中的緩存)

參考文章
https://segmentfault.com/a/1190000017962411
https://www.cnblogs.com/chengxs/p/10396066.html

2、為什么蘋果瀏覽器返回一次刷新一次

您好,很高興為您解答:蘋果瀏覽器返回一次刷新一次是因為它使用了一種叫做“緩存機制”的機制,來提高瀏覽器的速度和性能,從而可以節省網絡數據,減少下載的內容,提升瀏覽器的體驗。緩存機制的關鍵一步就是檢測網頁上的內容是否有變化,以決定是否需要重新加載網頁。蘋果瀏覽器會把頁面緩存,如果有任何更改,就會立即重新加載網頁,這樣可以保證你的網頁有最新內容出來。這也就是為什么蘋果瀏覽器總是返回一次刷新一次的原因。
希望可以幫到您,祝您生活愉快。 瀏覽器沒有緩存功能。蘋果瀏覽器返回刷新原因是,瀏覽器沒有緩存功能。每次打開一個網頁后,要返回上一頁的時候,都要重新加載。通常都是靜態的重新打開可以使搜索速度更快更流暢。

3、瀏覽器中的緩存

在我們使用瀏覽器訪問網頁的過程中,瀏覽器經常會緩存各種網頁中的內容。當再次訪問同一個網頁時,可以發現部分內容是從緩存直接讀取的。
查看HTTP的響應信息,就能發現一些端倪。比如響應 200 from cache; 304 not modify 等等。
下面對瀏覽器使用緩存的各種情形做一下分析:

Pragma是HTTP 1.0版本的一個參數,在HTTP 1.1版本里面這個參數也會生效,如果不想瀏覽器緩存網頁的內容,可以在 Response header 里面加上 :Pragma: no-cache。

Cache-Control是HTTP 1.1版本新增的一個參數。

Cache-Control:no-store 不允許緩存

Cache-Control:no-cache 不允許直接使用緩存,需要先發起請求和服務器協商(這個經常被誤認為是不允許緩存,實際上它的作用是讓瀏覽器在使用緩存前先請求服務端一次,確認內容是否有更新)

這樣的響應代表沒有跟服務端進行交互,內容是直接從本地讀取的。

Expires和Cache-control: max-age= 有類似的作用,都是指定緩存內容的有效周期,Expires指定的格式是格林威治時間,max-age則是秒數。

服務端也可以在 Response header 里加上 Last-Modified,它的格式是格林威治時間,再次請求時,瀏覽器的 Request header 中會多出一個叫 If-Modified-Since的值,通過比較這兩個值是否一致來決定是否返回304。

ETag的用法和 Last-Modified 類似,值是一種文件指紋。比如:ETag:"5a3ccff0-5dc"。
服務端在 Response header 里加上 ETag,再次請求時,瀏覽器的 Request header 中會多出一個叫 If-None-Match的值,通過比較這兩個值是否一致來決定是否返回304。

總體來說,瀏覽器使用緩存時有兩種表現:
1.直接從本地讀取,不與服務端有交互,就是 200 OK (from memory cache)。
2.請求一次服務端,查看本地緩存是否生效,這種方式叫 協商緩存。如果服務端判斷緩存有效,將不返回完整內容,而是返回 304 Not Modified。

在優先級上 Pragma > Cache-Control > Expires。

4、web前端緩存機制

前端緩存機制有多種,如瀏覽器緩存、CDN緩存、DNS緩存、代理服務器緩存等。

CDN全稱是Content Delivery Network,即內容分發網絡。CDN的原理是將資源存放在各地的緩存服務器上,當用戶請求資源時,從就近的服務器上返回緩存的資源,而不需要每次都從源服務器獲取,減輕源服務器的壓力,又能提升用戶的訪問速度。

瀏覽器可以將用戶請求的資源進行緩存,存放在本地。瀏覽器緩存一般通過請求頭來設置。
與瀏覽器緩存有關的頭部有:

瀏覽器會將服務器的域名與IP地址的映射緩存在本地,這樣用戶在訪問網站時,不用每次都去查詢DNS映射表。

在瀏覽器和服務器之間架設的一個服務器 ,這個代理服務器會幫助瀏覽器去請求頁面,然后將頁面進行處理和壓縮(例如壓縮圖片和文件),使頁面變小,再傳輸給瀏覽器。大部分代理服務器都有緩存的功能,如果瀏覽器所請求的文件在它本機中存在且是最新的,就不需要再從源服務器請求數據,提高了瀏覽速度。

在瀏覽某個頁面時,瀏覽器會判斷頁面的關聯內容,進行預加載。用戶在瀏覽A頁面時,就加載好B頁面,這樣當用戶去訪問B頁面時,B頁面很快就出來,提升了用戶體驗。但這個機制有一定的缺陷,就是預判不一定準確,可能會造成流量和資源的浪費。

5、北大青鳥java培訓:瀏覽器緩存功能在使用上都有哪些類型?

緩存功能的存在,讓我們在瀏覽網頁和訪問防止的時候可以更快的加載我們需要的內容,而今天北大青鳥http://www.kmbdqn.cn/就通過案例分析來了解一下,瀏覽器的緩存功能在使用上都有哪些類型。
1.ServiceWorkerServiceWorker是運行在瀏覽器背后的獨立線程,一般可以用來實現緩存功能。
使用ServiceWorker的話,傳輸協議必須為HTTPS。
因為ServiceWorker中涉及到請求攔截,所以必須使用HTTPS協議來保障安全。
ServiceWorker的緩存與瀏覽器其他內建的緩存機制不同,它可以讓我們自由控制緩存哪些文件、如何匹配緩存、如何讀取緩存,并且緩存是持續性的。
ServiceWorker實現緩存功能一般分為三個步驟:先需要先注冊ServiceWorker,然后監聽到install事件以后就可以緩存需要的文件,那么在下次用戶訪問的時候就可以通過攔截請求的方式查詢是否存在緩存,存在緩存的話就可以直接讀取緩存文件,否則就去請求數據。
當ServiceWorker沒有命中緩存的時候,我們需要去調用fetch函數獲取數據。
也就是說,如果我們沒有在ServiceWorker命中緩存的話,會根據緩存查找優先級去查找數據。
但是不管我們是從MemoryCache中還是從網絡請求中獲取的數據,瀏覽器都會顯示我們是從ServiceWorker中獲取的內容。
2.MemoryCacheMemoryCache也就是內存中的緩存,主要包含的是當前中頁面中已經抓取到的資源,例如頁面上已經下載的樣式、腳本、圖片等。
讀取內存中的數據肯定比磁盤快,內存緩存雖然讀取高效,可是緩存持續性很短,會隨著進程的釋放而釋放。
一旦我們關閉Tab頁面,內存中的緩存也就被釋放了。
那么既然內存緩存這么高效,我們是不是能讓數據都存放在內存中呢?這是不可能的。
計算機中的內存一定比硬盤容量小得多,操作系統需要精打細算內存的使用,所以能讓我們使用的內存必然不多。

轉載請帶上網址:http://yadikedp.com/posjitwo/118930.html

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 [email protected] 舉報,一經查實,本站將立刻刪除。
聯系我們
訂購聯系:小莉
微信聯系方式
地址:深圳市寶安區固戍聯誠發產業園木星大廈

公司地址:深圳市寶安區固戍聯誠發產業園木星大廈

舉報投訴 免責申明 版權申明 廣告服務 投稿須知 技術支持:第一POS網 Copyright@2008-2030 深圳市慧聯實業有限公司 備案號:粵ICP備18141915號

  • <bdo id="ogrsz"></bdo>
      1. <pre id="ogrsz"><abbr id="ogrsz"></abbr></pre>
        <p id="ogrsz"></p>
        <bdo id="ogrsz"></bdo>
        主站蜘蛛池模板: 余庆县| 革吉县| 太和县| 呼和浩特市| 三原县| 林芝县| 长兴县| 金坛市| 麻栗坡县| 安乡县| 孟州市| 铅山县| 长岛县| 灵丘县| 光山县| 同心县| 永登县| 诸暨市| 镇安县| 清徐县| 新巴尔虎右旗| 论坛| 武川县| 上栗县| 辽源市| 丽水市| 河南省| 常熟市| 安多县| 长沙市| 泊头市| 甘肃省| 宜阳县| 永寿县| 宁化县| 得荣县| 资阳市| 茂名市| 杂多县| 大姚县| 宜宾市|