当前位置: 首页 > news >正文

浏览器基础及缓存

目录

浏览器概述

主流浏览器: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 的路径范围

相关文章:

  • 02-Timer0-Timer1-Timer2-Timer3-Timer4测试程序
  • O - 方差
  • 湖北理元理律师事务所:债务优化中如何保障债务人生存权益
  • 安装 WSL2 与设置​
  • 基于MSE-Nacos实现服务的动态发现和配置动态管理
  • mac如何使用tensorboardx?
  • Hive集成Paimon
  • 【Erdas实验教程】022:遥感图像辐射增强(直方图均衡化)
  • 【性能调优系列】如何分析火焰图
  • 计算机操作系统(计算题公式)
  • React组件通信——props
  • MyBatisPlus 全面学习路径
  • 【AI学习】【Ubuntu 22.04】【安装Ollama】两种方式
  • Spring-ai 1.0.0 学习(三)——流式调用及模型参数
  • JavaScript学习笔记
  • React-router实现原理剖析
  • OC-UI学习-Auto Layout使用
  • Hierarchical Vector Quantization for Unsupervised Action Segmentation
  • 如何实现自动标注
  • 文本预测和分类任务
  • 旅游攻略的网站怎么做/seo分析报告
  • 确定网站推广的阶段目标/seo是什么服务
  • 做软件赚钱的网站有哪些/现在阳性最新情况
  • 公司网站设计平台/百度手机端推广
  • 太仓市住房和城乡建设局官方网站/play商店
  • 专业做旅游网站的公司/防疫管控优化措施