成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

基于HTTP瀏覽器緩存機制全面解析

瀏覽:422日期:2022-06-03 11:25:56
目錄
  • 什么是瀏覽器緩存
  • 非HTTP協議定義的緩存機制
  • 緩存流程圖
  • HTTP緩存機制
  • 服務端如何判斷緩存已失效
    • Last-Modified/If-Modified-Since
    • Etag/If-None-Match
  • 為什么有了Last-Modified還要Etag?
    • 200 OK(from cache)與304 Not Modified的區別
      • 200 OK( from cache ) 出現操作:
      • 304 Not Modified 出現操作:
    • 緩存的不同來源
      • 不能被緩存的請求

        什么是瀏覽器緩存

        Web緩存是指一個Web資源(如html頁面,圖片,js,數據等)存在于Web服務器和客戶端(瀏覽器)之間的副本。緩存會根據進來的請求保存輸出內容的副本;當下一個請求來到的時候,如果是相同的URL,緩存會根據緩存機制決定是直接使用副本響應訪問請求,還是向源服務器再次發送請求。

        比較常見的就是瀏覽器會緩存訪問過網站的網頁,當再次訪問這個URL地址的時候,如果網頁沒有更新,就不會再次下載網頁,而是直接使用本地緩存的網頁。

        只有當網站明確標識資源已經更新,瀏覽器才會再次下載網頁。瀏覽器和網站服務器是根據緩存機制進行緩存的

        非HTTP協議定義的緩存機制

        瀏覽器緩存機制,其實主要就是HTTP協議定義的緩存機制(如: Expires; Cache-control等)。但是也有非HTTP協議定義的緩存機制,如使用HTML Meta 標簽,Web開發者可以在HTML頁面的節點中加入標簽

        <meta http-equiv="Pragma" content="no-cache">

        上述代碼的作用是告訴瀏覽器當前頁面不被緩存,每次訪問都需要去服務器拉取。使用上很簡單,但只有部分瀏覽器可以支持,而且所有緩存代理服務器都不支持,因為代理不解析HTML內容本身。

        緩存流程圖

        利用瀏覽器緩存的過程:

        HTTP緩存機制

        根據Response Header里面的Cache-Control和Expires這兩個屬性,當兩個都存在時,Cache-Control優先級較高。

        Cache-Control

        該字段用于控制瀏覽器在什么情況下直接使用本地緩存而不向服務器發送請求。一般具有以下值:

        • Public:指示響應可被任何緩存區緩存。
        • Private:指示對于單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許服務器僅僅描述當用戶的部分響應消息,此響應消息對于其他用戶的請求無效。
        • no-cache:指示請求或響應消息不能緩存。
        • no-store:用于防止重要的信息被無意的發布。在請求消息中發送將使得請求和響應消息都不使用緩存。
        • max-age:指示瀏覽器可以接收生存期不大于指定時間(以秒為單位)的響應。
        • min-fresh:指示瀏覽器可以接收響應時間小于當前時間加上指定時間的響應。
        • max-stale:指示瀏覽器可以接收超出超時期間的響應消息。如果指定max-stale消息的值,那么瀏覽器可以接收超出超時期指定值之內的響應消息。

        Expires(石器時代的緩存機制)

        Expires 頭部字段提供一個日期和時間,在該日期前的所有對該資源的請求都會直接使用瀏覽器緩存而不用向服務器請求。

        例如:Expires: Sun, 08 Nov 2009 03:37:26 GMT

        注意:

        • cache-control max-age 和 max-stale將覆蓋Expires header。
        • 使用Expires存在服務器端時間和瀏覽器時間不一致的問題。
        • 另外有人說Expires 是HTTP 1.0的東西,現在默認瀏覽器均默認使用HTTP 1.1。

        服務端如何判斷緩存已失效

        服務端通過If-Modified-Since(Last-Modified)和If-None-Match(Etag)這兩個屬性的值來判斷緩存是否失效的。

        Last-Modified/If-Modified-Since

        Last-Modified/If-Modified-Since要配合Cache-Control使用。

        Last-Modified:響應資源的最后修改時間。

        If-Modified-Since:當緩存過期時,發現資源具有Last-Modified聲明,則在請求頭帶上If-Modified-Since(值就是Last-Modified)。服務器收到請求后發現有頭If-Modified-Since則與被請求資源的最后修改時間進行比對。若最后修改時間較新,說明資源又被改動過,則響應HTTP 200整片資源內容(寫在響應消息包體內);若最后修改時間較舊,說明資源無新修改,則響應HTTP 304,告知瀏覽器繼續使用所保存的cache。

        Etag/If-None-Match

        Etag/If-None-Match也要配合Cache-Control使用。

        Etag:資源在服務器的唯一標識(生成規則由服務器決定)。Apache中,ETag的值,默認是對文件的索引節(INode),大小(Size)和最后修改時間(MTime)進行Hash后得到的。

        If-None-Match:當緩存過期時,發現資源具有Etage聲明,則在請求頭帶上If-None-Match(值就是Etag)。服務器收到請求后發現有頭If-None-Match 則與被請求資源的相應校驗串進行比對,決定返回200或304。

        為什么有了Last-Modified還要Etag?

        Etag的出現主要是為了解決幾個Last-Modified比較難解決的問題:

        • Last-Modified標注的最后修改只能精確到秒級,如果某些文件在1秒鐘以內,被修改多次的話,它將不能準確標注文件的修改時間。
        • 如果某些文件會被定期生成,當有時內容并沒有任何變化,但Last-Modified卻改變了,導致文件沒法使用緩存。
        • 有可能存在服務器沒有準確獲取文件修改時間,或者與代理服務器時間不一致等情形。

        200 OK(from cache)與304 Not Modified的區別

        200 OK( from cache )不向服務器發送請求,直接使用本地緩存文件。304 Not Modified則向服務器詢問,若服務器認為瀏覽器的緩存版本還可用,那么便會返回304。

        200 OK( from cache ) 出現操作:

        1.地址欄回車

        2.頁面鏈接跳轉

        3.前進、后退

        304 Not Modified 出現操作:

        1.F5刷新

        2.新開窗口

        緩存的不同來源

        from disk cache:從磁盤中獲取緩存資源,等待下次訪問時不需要重新下載資源,而直接從磁盤中獲取。它的直接操作對象為CurlCacheManager。

        from memory cache:從內存中獲取資源,等待下次訪問時不需要重新下載資源,而直接從內存中獲取。

        兩者區別:當退出進程時,內存中的數據會被清空,而磁盤的數據不會,所以,當下次再進入該進程時,該進程仍可以從diskCache中獲得數據,而memoryCache則不行。

        不能被緩存的請求

        當然并不是所有請求都能被緩存。

        無法被瀏覽器緩存的請求:

        • HTTP信息頭中包含Cache-Control:no-cache,pragma:no-cache(HTTP1.0),或Cache-Control:max-age=0等告訴瀏覽器不用緩存的請求
        • 需要根據Cookie,認證信息等決定輸入內容的動態請求是不能被緩存的
        • 經過HTTPS安全加密的請求
        • POST請求無法被緩存
        • HTTP響應頭中不包含Last-Modified/Etag,也不包含Cache-Control/Expires的請求無法被緩存

        以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

        標簽: CSS HTML
        成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
        99综合电影在线视频| 亚洲欧美经典视频| 久久精品视频一区二区| 国内精品写真在线观看| 日本久久一区二区三区| 亚洲国产aⅴ天堂久久| 亚洲午夜精品国产| 国产欧美一区二区精品性色| 97久久人人超碰| 亚洲精品一区二区三区福利| eeuss影院一区二区三区| 欧美成人一区二区三区片免费| 国产成人av影院| 欧美一区二区三区人| 国产精品99久久久久久有的能看 | 紧缚捆绑精品一区二区| 色悠久久久久综合欧美99| 亚洲mv在线观看| 91精品福利在线| 蜜臀av一级做a爰片久久| 在线一区二区三区做爰视频网站| 男女性色大片免费观看一区二区| 在线精品视频免费播放| 美女性感视频久久| 色婷婷久久久久swag精品| 日韩成人免费看| 欧美三级一区二区| 日日夜夜免费精品| 欧美巨大另类极品videosbest| 国产最新精品精品你懂的| 欧美一级午夜免费电影| 97se亚洲国产综合在线| 国产精品久久99| 国产一区导航| 日韩二区三区四区| 欧美精三区欧美精三区| eeuss影院一区二区三区| 国产精品无圣光一区二区| 99精品国产在热久久婷婷| 午夜私人影院久久久久| 在线免费视频一区二区| 国产乱国产乱300精品| 日韩精品一区在线| 欧美精品尤物在线| 亚洲免费观看高清完整版在线 | 国产欧美一区二区精品仙草咪| 国产精品videosex极品| 亚洲综合色区另类av| 欧美在线视频你懂得| 国产成人av影院| 国产精品美女一区二区三区| 国产精品区一区| 久久99精品网久久| 日韩免费观看高清完整版| 午夜精品区一区二区三| 亚洲精品大片www| 色狠狠色噜噜噜综合网| 国产91色综合久久免费分享| 国产精品色婷婷久久58| 久久深夜福利| 国产成人激情av| 国产精品久久久久一区二区三区共| 亚洲欧美日韩一区在线观看| 国产一区二区三区国产| 国产喷白浆一区二区三区| 国产精品毛片一区二区三区| 久久国产人妖系列| 久久色在线视频| 一区二区三区成人精品| 麻豆91在线播放免费| 久久综合九色综合欧美98| 亚洲精品乱码| 麻豆成人免费电影| 国产偷v国产偷v亚洲高清| 久久激情久久| 99在线精品免费| 亚洲一二三级电影| 欧美成人免费网站| 国产欧美日韩视频一区二区三区| 国产中文字幕一区| 国产精品国产三级国产普通话三级| 久久久精品日韩| 97久久精品人人做人人爽 | 亚洲制服欧美中文字幕中文字幕| 51精品国自产在线| 一区在线视频观看| 韩国欧美国产1区| 中文字幕中文字幕一区二区 | 国产精品久久久一本精品| 在线视频你懂得一区二区三区| 91理论电影在线观看| 奇米一区二区三区av| 国产欧美日韩在线视频| 欧美亚洲丝袜传媒另类| 色综合天天视频在线观看| 午夜欧美在线一二页| 久久亚区不卡日本| 色天使久久综合网天天| 欧美视频不卡| 国产又黄又大久久| 亚洲精品免费看| 日韩精品一区二区三区中文精品 | 午夜在线精品| 99精品一区二区三区| 日韩精品成人一区二区三区| 2020日本不卡一区二区视频| 色爱区综合激月婷婷| 国产精品国产一区二区| 开心九九激情九九欧美日韩精美视频电影| 国产拍揄自揄精品视频麻豆| 欧美日韩中文字幕一区二区| 日韩亚洲视频| 99这里只有精品| 麻豆精品视频在线观看视频| 亚洲视频在线观看三级| 欧美大片国产精品| 欧美在线观看视频一区二区三区| 在线国产欧美| aa级大片欧美| 狠狠色狠狠色综合| 亚洲国产综合91精品麻豆| 国产欧美一区二区精品性色超碰 | 欧美精品一二三| 西西人体一区二区| 欧美私人啪啪vps| 成人激情开心网| 久久99这里只有精品| 亚洲a一区二区| 亚洲欧美色一区| 中文字幕免费不卡在线| 欧美成人猛片aaaaaaa| 欧美三级视频在线播放| 亚洲综合国产| 91久久夜色精品国产九色| 97国产一区二区| 国产ts人妖一区二区| 麻豆免费看一区二区三区| 一区二区久久久久久| 国产精品视频yy9299一区| 久久综合色婷婷| 日韩天堂在线观看| 在线不卡a资源高清| 欧美唯美清纯偷拍| 久久xxxx| 国产精品亚洲欧美| 亚洲国产欧美国产综合一区| 欧美日韩hd| 欧美承认网站| 91视频在线观看| 成人高清视频免费观看| 国产成人亚洲综合a∨猫咪| 精品一区二区三区在线播放视频 | 久久电影国产免费久久电影| 亚洲一区在线观看免费| 亚洲欧美日韩成人高清在线一区| 中文字幕高清一区| 日本一区二区视频在线观看| 久久蜜桃av一区二区天堂| 精品sm在线观看| 欧美videos中文字幕| 日韩精品专区在线影院观看| 欧美一区二区三区免费大片| 欧美日产在线观看| 欧美美女直播网站| 欧美天堂亚洲电影院在线播放| 老色鬼久久亚洲一区二区| 免费久久99精品国产自在现线| 国产欧美日本在线| 国产欧美韩日| 亚洲影院一区| 免费日韩精品中文字幕视频在线| 国产精品久久久久9999高清| 一本久久综合| 午夜亚洲影视| 色偷偷88欧美精品久久久| 久久久国产亚洲精品| 美日韩精品免费| 久久久久国产一区二区| 久久久噜噜噜| 欧美在线观看18| 欧美人xxxx| 日韩精品一区二区三区老鸭窝| 日韩亚洲欧美在线| 亚洲精品一线二线三线| 久久免费的精品国产v∧| 亚洲国产精品v| 亚洲色图制服丝袜| 亚洲成人免费视频| 日本视频免费一区| 国产乱码精品一区二区三区五月婷| 国产乱淫av一区二区三区| 成人av电影在线播放| 91麻豆免费看| 国内精品嫩模av私拍在线观看| 亚洲第一黄网| 午夜在线视频观看日韩17c| 在线观看视频一区二区欧美日韩| 欧美日本高清视频在线观看| 日韩欧美国产综合一区| 国产欧美一区二区精品性 |