浏览器基础及缓存

目录

浏览器概述

主流浏览器: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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;这…