浏览器需要知道的知识

YOLOv8改进:基于EfficientNetV2均衡缩放网络的特征提取层优化【YOLOv8】 YOLO(You Only Look Once)系列模型以其高效的实时目标检测能力而闻名。YOLOv8作为该系列的最新版本,通过引入改进的网络结构和算法优化,进一步提升了目标检测的性能。然而,YOLOv8在特征提取阶段的网络结构仍有改进的空间。EfficientNetV2是一种基于均衡缩放的卷积神经网络,它通过优化网络的宽度、深度和分辨率来实现高效的特征提取。与之前的EfficientNet版本相比,EfficientNetV2在速度和精度上都有显著提升,尤其在处理复杂目标检测任务时表现尤为突出。 阅读详情

渲染过程

输入网址,浏览器交给浏览器进程开始处理你输入的内容

执行 beforeUnload 事件,卸载当前页面

如果不是网址,则开始跳到默认搜索引擎,执行搜索

如果是网址,判断是否存在缓存,是的话,读取缓存并渲染,否则向服务器发送请求

之后把控制权交给网络进程

网络进程会开始执行 DNS 解析,获取 IP地址,并开始建立连接 ​计算机网络​ 

请求会发送到对方服务器,然后 交给 nginx 进行处理 (如果有负载均衡,会发送到各地对应的服务器进行处理)

建立连接

HTTP连接

客户端发送SYN到服务器

服务器接收到SYN,并生成ACK,发送给客户端

客户端接收到服务的的SYN和ACK,标志连接建立成功

HTTPS连接

客户端发送支持的加密协议和版本给服务端

 Client Hello

服务端找到适合的加密协议

Server hello

服务端返回证书和公钥

客户端使用根证书验证证书合法性,生成对称密钥,通过证书的公钥加密,发送给服务端

服务端使用私钥解密,获取对称密钥,使用对称密钥加密数据

客户端解密数据,建立SSL连接

连接建立完成后,浏览器开始读取服务器返回的数据

读取 HTTP 或者 HTTPS 响应的状态码

是否返回 301 和 302,如果是,浏览器将读取HTTP的 Location 字段,执行重定向,并 执行 beforeUnload 之后的过程

返回200,开始读取 Content-Type 字段,判断文件 MIMIE 类型

并根据MIMIE 构建其他请求进行请求渲染

返回404,nginx 是否有404 页面 或者 自定义 nginx 404 内容

没有,执行浏览器默认的异常

有,nginx 返回相关数据,开始渲染

其他异常

所有数据传输完成,断开连接

HTTP

客户端发送FIN=1到服务器

服务端接收到之后,发送ACK到客户端,进入等待关闭状态,此时仍然可以发送接收数据

服务端发送FIN=1,表示数据已经发送完成

客户端收到内容,断开连接

HTTPS

客户端断开连接,发送close_notify

渲染过程,将交给渲染进程 和 GPU 进程去负责

解析的过程,其实是根据相关语义,通过词法分析和语法分析,开始构建 Token,如果不合法,将会在解析过程抛出异常

解析HTML,构建DOM树

解析CSS,构建styleSheets (可以通过document.styleSheets 查看浏览器解析好的一个 CSS 结构)

合并HTML、CSS,生成render tree

根据生成好的 render tree,计算每个节点的层级、transform等,并生成layout tree

浏览器执行完分层后,会开始执行光栅化,并对每个渲染区域进行分块,这里浏览器做了优化。(渲染的时候,并不是全部都渲染的,由于内容过多,所以浏览器只会渲染可视区域的部分)

重绘 Repaint

只改变颜色,不改变位置、宽高的被称作重绘

重排(回流) Reflow

导致元素宽高、位置发生变化的被称为重排,重排一定会触发重绘

浏览器通过显卡把需要显示的内容发送给显示器,显示器读取缓冲区的内容,根据逐行扫描的方式进行渲染

渲染完成

其他问题

在渲染过程中,CSS是否会阻塞渲染,还有js?

在渲染过程中,css会阻塞渲染,但不会阻塞解析,应该是因为需要计算样式的原因

js一定会阻塞解析和渲染,设置了async的script会并行下载,并立即执行,defer 会在dom解析的时候下载,但是会等完成后再去执行

所以head内的js尽量不要操作dom,也不要放,不然会等js下载执行完成才会继续解析dom,造成白屏

css解析规则是啥样的?

css解析规则是从后往前进行解析的,这样的好处就是可以最快的找到被选择的样式,如果从前往后解析,可能会导致解析到一半发现不对,会再次重新解析。

缓存 (建议收藏)为什么第二次打开页面快?五步吃透前端缓存,让页面飞起 (juejin.cn)

强缓存

通过判断Expires和Cache-Control,如果可以缓存,返回200

Expires

HTTP1.0的缓存方式,一个绝对时间

Cache-Control Cache-Control - HTTP | MDN (mozilla.org)

public(可以被服务器和中间服务器缓存)

max-age=1000(表示n秒内可以读取该缓存)

private

只能被服务器缓存

no-cache

和服务器协商判断该文件是否可被缓存,但是不缓存过期的

no-store

不缓存所有数据

协商缓存

通过If-None-Match和If-Modified-Since进行判断,如果返回304,使用缓存,否则返回200,优先使用Etag进行判断,否则使用Last-Modified进行判断。

Etag可以准确的表示文件是否发生变化,而Last-Modified针对短时间内多次更改可能会造成缓存失效。Etag具有强弱之分,以W开头的为弱Etag,表示使用弱验证器,比较容易生成

If-None-Match

携带Etag向服务器进行请求,判读是否可被缓存

If-Modified-Since

携带Last-Modified向服务器进行请求,判断是否可被缓存

启发式缓存

如果响应头没有Expires、Cache-Control:max-age或Cache-Control: s-maxage,并且响应头不包含其他缓存的限制,就可以使用启发式缓存计算有效期,通常根据响应头中的Date字段(报文创建时间)减去Last-Modified值的10%作为缓存时间

缓存位置

缓存策略

浏览器决定,优先使用memory cache,然后使用disk cache

memory cache

读取速度快,适合小文件

disk cache

读取速度慢,适合大文件

service worker

push cache

http2新增,当以上3种缓存都没命中之后使用,只会存在seession中,一旦会话结束就被释放,所以时间很短,并且只能被使用一次

跨域

原因

跨域主要是因为同源策略所引起的,同源策略要求域名、协议、端口三者一样属于同源

解决方案

CORS 跨源资源共享(CORS) - HTTP | MDN (mozilla.org)

Access-Control-Allow-Origin(设置哪些地址可以访问,*为所有,多个域名通过,隔开)

Access-Control-Allow-Headers(允许的请求Headers,多个,隔开)

Access-Control-Allow-Methods(允许的请求方式,多个通过,隔开)

Access-Control-Allow-Credentials(是否允许Cookie,值为true和false,同时需要设置HTTP的same-site不能为none)

Access-Control-Expose-Headers(设置浏览器可以获取到的headers)

简单请求

请求方式是head、get、post 3种之一

HTTP头部不超过Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type

Content-Type为: application/x-www-form-urlencoded、multipart/form-data、text/plain

复杂请求

非简单请求就是复杂请求,复杂请求POST会发送一个OPTIONS预检请求,判断服务器是否支持该请求方式,如果为OPTIONS请求,服务器应该返回204

nginx反向代理

document.domain

postMessage

jsonp

进程

渲染进程

GPU进程

浏览器进程

插件进程

web安全

跨站脚本攻击 XSS(Cross Site Scripting)

介绍

是指恶意攻击者往Web页面里插入恶意 Script 代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的

分类

反射型(持久形)

存储型(非持久形)

DOM型

攻击方式

通过xx方式,恶意注入代码,然后被执行

防御

对输入内容进行校验,并对一些字符做转义处理

 跨站脚本漏洞(XSS)基础讲解 

跨站请求伪造 CSRF(Cross-site request forgery) 

介绍

通过登录授信网站,并在本地生成cookie, 在不退出的情况下,去访问危险网站,就会收到攻击

防御

检查 http 的 Referer 字段,判断是否同域名下

服务端生成一个随机的 token,每次请求的时候,服务端都去校验当前token是否过期

内容安全策略 CSP(Content Security Policy)

用于检测某些特定的攻击类型,包括XSS和数据注入,HTTP需要返回Content-Security-Policy,对浏览器内的资源进行检查

浏览器引擎

webkit  苹果

blink  谷歌

gecko 火狐

本地Pycharm连接远程服务器详细配置过程(直接在本地使用服务器显卡,很棒) 相信很多人都遇见过这种情况:实验室成员使用同一台服务器,每个人拥有自己的独立账号,我们可以使用服务器更好的配置完成实验,毕竟自己哪有money拥有自己的3090呢。 阅读详情

相关推荐

基于h5端的视频录制和回溯功能的实现

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

发果叁 3191

一文讲透HTTP缓存之ETag

无论是前端、后端或者运维同学,在平时的开发工作中,都会和HTTP缓存打交道,大家或多或少都了解HTTP缓存中的ETag字段,它是资源的特定版本的标识符,可以让缓存更高效,并节省带宽。本文系统性的阐述了ETag的起源、生成原理及使用。看完本文后,对于不了解ETag的同学能够知道ETag的来龙去脉,并能马上上手使用;对于熟悉ETag的同学也能做到温故而知新。 ETag定义及起源 ETag(Entity-Tag,下文简称:ETag)是万维网协议HTTP的一部分,它是 HTTP 为Web 缓存验证提供的多种机..

薛小科的博客 1万+

【数据集】米级别热红外卫星合集:SDGSAT-1、HotSat-1等

米级别热红外卫星合集:SDGSAT-1、HotSat-1等

WW、forever的博客 1252

HTTP中ETag语法及使用实战详解

如果 URL 上的资源内容改变,一个新的不一样的 ETag 就会被生成。了解完 ETag 相关知识后,基于 koa、koa-conditional-get、koa-etag 和 koa-static 这些库来介绍一下,在实际项目中如何利用 ETag 响应头和 If-None-Match 请求头实现资源的缓存控制。Cache-Control 描述的是一个相对时间,在进行缓存命中的时候,都是利用客户端时间进行判断,所以相比较 Expires,Cache-Control 的缓存管理更有效,安全一些。

D0126_的博客 4493

飞牛fnNAS搭建web版微信

摘要:本文介绍了一种通过Docker在飞牛NAS上部署微信客户端的方法,实现24小时同步微信聊天记录。具体步骤包括:1)激活飞牛NAS的Docker功能并配置镜像加速源;2)创建专用文件夹并下载docker-wechat镜像;3)设置容器参数并部署微信客户端;4)通过局域网或ZeroTier内网穿透实现远程访问。相比传统Windows/Linux方案,该方法资源占用更低,适合需要长期保存微信聊天记录的用户。

dgnankai的专栏 3333

【LaTex】3.5 数据分析

简述了LaTex柱状图、饼图、折线图的画法。

你的指尖有改变世界的力量 5888

HTTP缓存 Etag

什么是ETag? Etag 是Entity tag 的缩写,可以理解为“被请求变量的实体值”,Etag是服务端的一个资源的标识,在 HTTP 响应头中将其传送到客户端。所谓的服务端资源可以是一个Web页面,也可以是JSON或XML等。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端。 比如,浏览器第一次请求一个资源的时候,服务端给予返回,并且返回了ETag: "50b1c1d4f775c61:df3" 这样的字样给浏览器,当浏览器再次请求这个资源的时候,浏览器会将If-None-

qq_29850249的博客 609

Yolov8轻量级网络:Ghostnet、G_ghost、Ghostnetv2家族大作战(一):华为Ghostnet,超越谷歌MobileNet | CVPR2020

Yolov8引入轻量级网络Ghostnet、G_ghost、Ghostnetv2等,减少最新的深度神经网络的计算成本,引入高效的神经网络结构。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2568

http 缓存说明

Cache-control是一个HTTP 通用头类型,用于在客户端请求和服务器响应中指定浏览器缓存策略。 政策包括资源的缓存方式,缓存位置以及过期前的最长使用期限。 Cache-Control: Public 这个HTTP 请求它返回的内容所经过的任何路径中,包括中间的一些HTTP 代理服务器以及发出请求的客户端浏览器,都可以进行对返回内容的缓存操作 Cache-Control: Pr...

neos的博客 247

245. 项目195:简易文字冒险游戏——《跟老吕学Python·新手》

如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过优快云私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。老吕珍视每一位读者的反馈和支持,期待与您共同学习、共同进步,共同创造美好的未来!我们的目标是不仅教会您Python语言,更是培养您解决问题的思维方式。请随意翻阅,按照自己的节奏学习,让这本专栏成为您编程旅程中的可靠伙伴。开发一个简易的文字冒险游戏,通过文本描述场景和事件,让玩家通过选择不同的选项来推动故事发展。

Python老吕的博客 712

基于环形槽谐振器与PIN二极管的频率可重构Vivaldi天线设计与CST仿真研究

摘要 本文设计了一种基于FR4基板的频率可重构Vivaldi天线,通过集成环形槽谐振器(CSRR)和PIN二极管开关实现超宽带(UWB,2-8 GHz)与窄带(2.4/3.5/5.2 GHz)模式的电控切换。天线采用指数渐变槽线结构,结合CSRR的滤波特性和PIN二极管的开关功能,利用CST仿真优化参数。结果表明,UWB模式下S11<-10 dB,窄带模式下目标频点谐振显著,其他频段抑制良好,验证了设计的可行性。该方案为多频段无线通信系统提供了紧凑、低成本的可重构天线解决方案。 关键词:频率可重构天线

huanghm88的专栏 217

[翻译]创建ASP.NET WebApi RESTful 服务(11)

本章介绍通过使用Ali Kheyrollahi开发的CacheCow来实现服务器端的缓存。所有代码现在都可以在GitHub上下载。 我们将要实现的缓存方式叫做Conditional Requests,实现方式其实很简单。客户端通过在请求Header中包含ETag信息,实现和服务器的交互,确认当前客户端包含的部分数据是否已经被修改,有则拉取,没有服务器端就返回304(Not Modified)和空的...

weixin_30246221的博客 127

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

测试工程师需要知道的浏览器小知识

在谷歌浏览器和火狐浏览器中,测试人员可用的工具非常多,但是找到并利用好实用的工具可以极大地提高测试人员的工作效率。技巧并不是所有人都需要,但却是聪明人的首要选择。

okcross0的博客 860

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

你应该知道的浏览器缓存知识

写在前面:以下文章对笔者理解浏览器缓存有较大的帮助,感谢作者的分享。 web页面缓存之Cache-Control问题 彻底理解浏览器缓存机制 1、缓存的分类 缓存分为服务端侧(server side,比如 Nginx、Apache)和客户端侧(client side,比如 web browser)。 服务端缓存又分为代理服务器缓存和反向代理服务器缓存(也叫网关缓存,比如 ...

weixin_30391339的博客 205

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Web开发人员必须要知道的浏览器知识

http://hi.youkuaiyun.com/space.php?do=home 内核的作用 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“解释引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内...

数据库天地 148

Chrome浏览器你可以选择知道的知识

Chrome浏览器我想是每一个前端er必用工具之一吧,一部分原因是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是因为它的控制台功能强大了吧,说它是神器一点也不过分,很方便。但其实很多开发者并没有用出控制台的精髓,只是使用简单的console.log();其实控制台功能远远不止这么简单哦。 1.console.clea...

weixin_34072159的博客 104

前端攻城狮在浏览器中需要知道哪些知识点?另附有浏览器面试题

关于浏览器知识,在如今的前端中也显的尤为重要了,面试中频繁被问及到,在这个上边小编也是吃过亏了的,今天就来分享一波儿一个前端攻城狮浏览器中需要知道哪些知识点?

2301_79773949的博客 993

web前端知识点归纳笔记:你要知道浏览器是多进程的

今天看到一张有意思的动图,拿来与大家分享一下:各大浏览器站在一起观赏风景,当预感到溅起的水花即将奔来的刹那,除IE浏览器成功接收了水花的洗礼外,其它的浏览器早就一一避开了。难道说IE浏览器的反映速度真的有那么慢吗?是的,IE浏览器的速度真的有那么慢! 有的时候静下来仔细想想,连IE浏览器都有勇气让你将它设为默认浏览器,那么面对面试官,还有什么理由去害怕呢? 提前声明下,本笔记所提到的浏览器均指...

张培跃的个人博客 337
上一篇: Python 面试时几个重要问题
下一篇: 熬夜总结50个js高级知识点(一)
goodfornothing-s
博客等级 码龄8年 105粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值