瀏覽器基礎及緩存

目錄

瀏覽器概述

主流瀏覽器:IE、Chrome、Firefox、Safari

Chrome

Firefox

IE

Safari

瀏覽器內核

核心職責

主流瀏覽器內核

JavaScript引擎

主流的JavaScript引擎

瀏覽器兼容性

瀏覽器渲染

渲染引擎的基本流程

DOM和render樹構建

html解析

DOM

渲染樹與DOM樹的關系

布局

繪制

瀏覽器緩存

靜態資源緩存-相關概念

靜態資源緩存-影響因素

控制靜態緩存

方式1:html中的緩存配置

方式2:容器緩存配置

緩存規劃

LocalStorage

LocalStorageAPI

SessionStorage

比較LocalStorage和SessionStorage

Cookies


瀏覽器概述

瀏覽器是指可以顯示網頁服務器或者文件系統的HTML文件內容,并且讓用戶與這些文件交互的軟件。

主流瀏覽器:IE、Chrome、Firefox、Safari

Chrome

Chrome是一款由Google公司開發的網頁瀏覽器,該瀏覽器基于其他開源軟件撰寫,目標是提升穩定性、速度和安全性,并創造出簡單且有效率的使用者界面。

Firefox

Mozilla Firefox,中文俗稱“火狐”(正式縮寫為Fx或fx,非正式縮寫為MF),是一個自由及開放源代碼的網頁瀏覽器,使用Gecko排版引擎,支持多種操作系統,如Windows、Mac OS X及GNU/Linux等。

IE

微軟公司推出的一款網頁瀏覽器。原稱IE(6版本以前)和IE(7、8、9、10、11版本),簡稱IE。

Safari

Safari是蘋果計算機的操作系統Mac OS中的瀏覽器,使用了KDE的KHTML作為瀏覽器的運算核心。

瀏覽器內核

瀏覽器內核(排版引擎、渲染引擎)是瀏覽器的核心模塊,負責將網頁代碼轉換成用戶可見的頁面。

核心職責

  1. 解析HTML/CSS ——構建DOM樹和CSSOM樹——合并成渲染樹
  2. 布局——計算每個元素的位置和大小
  3. 繪制——將元素繪制到屏幕
  4. 處理JavaScript(部分內核包含獨立 JS引擎)

主流瀏覽器內核

內核是否開源?插件支持應用瀏覽器支持操作系統
Trident否,提供接口調用ActiveXIEwindows
Gecko是,多種協議授權發行,包括:MPL、GPL、LGPLNPAPIFirefoxwindows,Mac,Linux/BSD
BlinkNPAPIChrome、Operawindows,Mac,Linux/BSD
Webkit是,遵循LGPL協議NPAPIChrome、Safariwindows,Mac,Linux/BSD

JavaScript引擎

JavaScript引擎就是用來執行JS代碼的。

主流的JavaScript引擎

V8引擎是一個JavaScript引擎。JavaScript程序在V8引擎運行速度媲美二進制程序。

V8引擎支持眾多操作系統,如windows、Linux、Android等。

瀏覽器兼容性

瀏覽器兼容性問題又被稱為網頁兼容性或網站兼容性問題,指網頁在各種瀏覽器上顯示效果可能不一致而產生瀏覽器和網頁間兼容問題。

產生原因:

網頁瀏覽標準只規定了接口,并沒有接口實現的詳細規范,是的各瀏覽器對相同的功能使用了不同的實現方法。

瀏覽器版本實現上的差異,老版本瀏覽器不支持新的技術。

瀏覽器渲染

渲染引擎的基本流程

  1. 解析生成DOM樹
  2. 渲染
  3. 布局
  4. 繪制

DOM和render樹構建

html解析

詞法解析:將輸入內容分割成大量標記的過程。可以理解為講一段話分割成一個個的單詞。

語法分析:是應用語言的語法規則的過程。

DOM

解析器的輸出“解析樹”是由DOM元素和屬性節點構成的樹結構。

DOM是HTML文檔的對象表示,同時也是外部內容與HTML元素之間的接口。解析樹的根節點是“Document”對象。

DOM與標記之間幾乎是一一對應的關系。

渲染樹與DOM樹的關系

在WebKit中,解析樣式和創建呈現器的過程稱為“附加”,每個DOM節點都有一個attach方法,附加是同步進行的,將節點插入DOM樹需要調用新的節點attach方法。

處理htmlbody標記就會構建呈現樹根節點。這個根節點呈現對象對應于css規范中所說的容器block,這是最上層的block,包含了其他所有block。它的尺寸就是視口,即瀏覽器窗口顯示區域的尺寸。Firefox稱之為ViewportFrame,而WebKit稱之為RenderView,這就是文檔所指向的呈現對象。呈現樹的其余部分以DOM樹節點插入的形式來構建。

布局

呈現器在創建完成并添加到呈現樹時,并不包含位置和大小信息。計算這些值的過程稱為布局或重排。

布局是一個遞歸的過程。他從根呈現器開始,然后遞歸遍歷部分或所有的框架層次結構,為每一個需要計算的呈現器計算幾何信息。

繪制

在繪制階段,系統會遍歷呈現樹,并調用呈現器的paint方法,將呈現器的內容顯示在屏幕上。繪制工作使用用戶界面基礎組件完成的。

和布局一樣,繪制也分為全局和增量兩種。在增量繪制中,部分呈現器發生了更改,但是不會影響整個樹。

瀏覽器緩存

緩存:把數據或者內容,放到能夠更快訪問的位置。

靜態資源緩存-相關概念

概念:瀏覽器把靜態文件保留在本地的一種行為

內容:包括html、JS、css、圖片等文件

作用:實現對靜態資源更快的訪問

靜態資源緩存-影響因素

Expires:用于設置靜態資源的過期時間

Last-Modified/If-Modified-Since:標示這個相應資源的最后修改時間

Etag/If-None-Match:web服務器響應請求時,告訴瀏覽器當前資源在服務器的唯一標識

控制靜態緩存

方式1:html中的緩存配置

<meta http-equiv="expires" content="Mon,16  July 2025 00:00:00 GMT" />

用于這頂網頁的到期時間,一但過期則必須到服務器上重新調用。需要注意的是必須使用GMT時間格式。

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

用于設定禁止瀏覽器從本地機的緩存中調閱頁面內容,設定后一但離開網頁就無法重新從Cache中調出。

方式2:容器緩存配置

以nginx為例進行配置,配置文件地址:nginx\conf\nginx.conf

緩存規劃

資源類型是否緩存緩存時間
html協商緩存
自研js30天
自研css30天
圖片30天
第三方js、css180天

HTML做成協商緩存,即每次都去服務端咨詢是否有更新。

所有外聯的JS、css都增加文件hash戳,當文件內容變化時,此文件后綴也變化,變化后的文件總是從服務端重新讀取。

LocalStorage

LocalStorage時HTML5的一種本地緩存方案。主要用于儲存一些體積較大的數據。

LocalStorage有大小限制,各個瀏覽器限制不同,子啊2-5M之間

LocalStorageAPI

  • 增加/修改:LocalStorage.setItem(key,value)
  • 獲取:LocalStorage.getItem(key)
  • 刪除:LocalStorage.removeItem(key)
  • 清空:LocalStorage.clear()

SessionStorage

SessionStorage是HTML5的一種本地緩存方案。

與LocalStorage相似,唯一的區別在于只對當前Session生效。

API與LocalStorage相同。

比較LocalStorageSessionStorage

Web Storage生命周期作用域儲存大小數據同步適用場景
LocalStorage永久存儲同源跨標簽頁共享通常在5MB-10MB同源窗口實時同步1.長期存儲用戶的偏好
2.登錄狀態等
SessionStorage會話級存儲僅限當前標簽頁通常在5MB-10MB不共享1.臨時儲存表單數據
2.單頁應用狀態等

Cookies

Cookies式網站為了辨別用戶身份或Session跟蹤而儲存在用戶瀏覽器端的數據。Cookies信息一般會通過HTTP請求發送到服務器端。

一條Cookies記錄主要有鍵、值、域、過期時間、大小組成。一般用于保存用戶的網站認證信息。

Cookies的最大長度為4KB

屬性作用域說明
name必需Cookie 的鍵名(區分大小寫)
value必需Cookie 的值(需 URL 編碼)
expires可選絕對過期時間
Max-Age可選相對過期時間,優先級高于expires
domain可選控制 Cookie 的作用域名
path可選限制 Cookie 的路徑范圍

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84248.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84248.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84248.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu 安裝Telnet服務

1. 安裝Telnet 客戶端 sudo apt-get install telnet 2. 安裝Telnet 服務器 &#xff08;這樣才能用A電腦的客戶端連接B電腦的Telnet服務&#xff09; sudo apt-get install telnetd 3. 這時候Telnet服務器是無法自我啟動的&#xff0c;需要網絡守護進程服務程序來管理…

AI+預測3D新模型百十個定位預測+膽碼預測+去和尾2025年6月19日第113彈

從今天開始&#xff0c;咱們還是暫時基于舊的模型進行預測&#xff0c;好了&#xff0c;廢話不多說&#xff0c;按照老辦法&#xff0c;重點8-9碼定位&#xff0c;配合三膽下1或下2&#xff0c;殺1-2個和尾&#xff0c;再殺4-5個和值&#xff0c;可以做到100-300注左右。 (1)定…

觀察者模式 vs 發布訂閱模式詳解教程

&#x1f31f;觀察者模式 vs 發布訂閱模式詳解教程 收藏 點贊 關注&#xff0c;持續更新高頻面試知識庫&#xff01;&#x1f680; 一、核心概念&#xff08;總&#xff09; 在軟件開發中&#xff0c;觀察者模式&#xff08;Observer&#xff09; 和 發布訂閱模式&#xff0…

【云馨AI-大模型】MD2Card:從Markdown到知識卡片的完美轉變

Markdown的魅力與挑戰MD2Card的核心功能使用體驗與案例分析總結 在當今這個信息快速傳播的時代&#xff0c;內容創作者們一直在尋找更有效的方式來呈現他們的想法和知識。無論是為了個人學習筆記、團隊內部的知識分享還是對外的內容發布&#xff0c;一個清晰、美觀的展示方式顯…

【實戰教程】OPEN API 雷池社區版自動拉黑IP

老版本使用雷池社區版的時候都需要在界面操作&#xff0c;但是網絡攻擊往往都是無規律的&#xff0c;每次都手動操作非常累 前一段時間雷池社區版剛好開放了OPEN API 功能&#xff0c;可以支持大家使用API的方式進行管理了 但是沒有相關文檔非常難受&#xff0c;一直沒有使用…

Hot100——鏈表專項

目錄 相交鏈表 反轉鏈表 回文鏈表 環形鏈表 合并兩個有序鏈表 相交鏈表 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if (headA nullptr || headB nullptr) {return nullptr;}ListNode *pA headA;ListNode *pB headB;while (pA ! pB) {pA (pA…

Java + Spring Boot 后端防抖切面類AOP代碼問題排查分析

需排查分析的防抖切面類 AOP代碼&#xff1a; package com.weiyu.aop;import com.weiyu.anno.Debounce; import com.weiyu.utils.DebounceUtil; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotatio…

【FreeRTOS-信號量】

參照正點原子以及以下gitee筆記整理本博客&#xff0c;并將實驗結果附在文末。 https://gitee.com/xrbin/FreeRTOS_learning/tree/master 一、信號量簡介 1、什么是信號量 答&#xff1a;信號量是一種解決同步問題的機制&#xff0c;可以實現對共享資源的有序訪問。 假設有…

C++中decltype / auto 類型自動推導的深入講解

一、基本定義 關鍵字含義出現版本auto根據初始化表達式自動推導類型C11decltype根據表達式的類型推導類型C11 二、二者區別 特性autodecltype(expr)用途聲明變量獲取表達式類型是否需要初始化是否&#xff08;可用表達式&#xff0c;如函數參數&#xff09;是否推導引用否&am…

Echarts數據可視化開發教程+120套開源數據可視化大屏H5模板

數據可視化跨越了語言、技術和專業的邊界&#xff0c;是能夠推動實現跨界溝通&#xff0c;實現國際間跨行業的創新的工具。 正如畫家用顏料表達自我&#xff0c;作者用文字講述故事&#xff0c;而統計人員用數字溝通 ...... 同樣&#xff0c;數據可視化的核心還是傳達信息。 …

華為提取版,低調使用!

大家好呀&#xff01;今天想給大家推薦兩款實用軟件&#xff0c;一個是視頻軟件的定制版&#xff0c;另一個是衛星地圖軟件。 01 引言 之前給大家推薦過某秋音樂的定制版&#xff0c;結果被投訴了。以后大家推薦某秋家的軟件要小心&#xff0c;不然很容易違規。 今天推薦的是…

天匯企業的網絡設計與實現

天匯企業網絡的設計與實現 摘要&#xff1a;互聯網技術與通信技術的相互帶動作用&#xff0c;使得兩者皆呈現多樣化的快速發展趨勢&#xff0c;5G的時代序幕在已經逐漸開啟&#xff0c;由此引發的互聯網技術和設備變革必然是各界人士關注的重點&#xff0c;幾乎所有與計算機相…

系統架構設計師:安全架構考點解析與例題

一、安全架構概述 安全架構是系統架構設計中確保信息系統安全性的重要組成部分,它定義了保護系統免受安全威脅的策略、技術和方法。安全架構需要貫穿系統設計的全生命周期,從需求分析到部署運維。 安全架構核心目標 ??保密性??:防止未授權訪問信息??完整性??:防止…

計量經濟學(復習/自用/未完)

補充&#xff1a; 1、多重共線性的補充 所謂的估計標準誤&#xff0c;指的是回歸系數的標準誤差。例如回歸方程&#xff1a; y β0 β1X1 β2X2 e 我們構建的回歸方程的系數的計算得出是基于樣本的。這意味著&#xff0c;我們每從總體中進行一次抽樣&#xff0c;然后計算…

HarmonyOS性能優化——感知流暢優化

在應用開發中&#xff0c;動畫可以為用戶界面增添生動、流暢的交互效果&#xff0c;提升用戶對應用的好感度。然而&#xff0c;濫用動畫也會導致應用性能下降&#xff0c;消耗過多的系統資源&#xff0c;甚至影響用戶體驗。關于感知流暢度請參閱提升動畫感知流暢度。 視覺感知…

基于Python的房屋信息可視化及價格預測系統

開發語言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.10(必須)數據庫&#xff1a;mysql 5.7數據庫工具&#xff1a;Navicat12開發軟件&#xff1a;PyCharm 系統展示 系統首頁 系統登錄 房價預測 房屋管理 房屋分析 個人信息 密碼修改 用戶管理 摘…

(17)-java+ selenium->自動化測試-元素定位大法之By css上

1.簡介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表達式有其自己的格式。CSS定位方式擁有比xpath定位速度快,且比CSS穩定的特性。下面詳細介紹CSS定位方式的使用方法。相對CSS來說,具有語法簡單,定位速度快等優點。 2.CSS定位優勢 CSS定位是平常使用過程中非常重要…

高效I/O處理:模型與多路復用的探討

目錄 一、了解IO模型 &#xff08;一&#xff09;異步IO和同步IO &#xff08;二&#xff09;五種IO快速回顧 二、IO多路復用 &#xff08;一&#xff09;IO 多路復用模型 &#xff08;二&#xff09;select 實現原理 &#xff08;三&#xff09;poll 實現原理 &#x…

行列式展開定理(第三種定義) 線性代數

目錄 1.余子式 2代數余子式 3行列式展開公式&#xff08;常用&#xff09; 本篇的用途是關于三階以上行列式的一般解法。因為對于三階以上行列式我們沒有類似于2階和三階一樣的特殊的求值辦法&#xff0c;而對于我們上一篇講的辦法來說又太復雜了&#xff0c;一般考試幾乎不…

一種輕量級IDS,使用新型特征選擇方法進行早期APT檢測

大家讀完覺得有幫助記得關注和點贊&#xff01;&#xff01;&#xff01; 高級持續性威脅 (APT) 是一種多階段、高度復雜且隱蔽的網絡威脅形式&#xff0c;它通過獲得對網絡的未授權訪問來竊取有價值的數據或破壞目標網絡。這些威脅通常在很長一段時間內未被發現&#xff0c;這…