前端基础梳理二之浏览器

本文详细解析了从输入网址到页面展示的全过程,包括DNS解析、TCP三次握手、TLS加密及状态码解读。深入探讨浏览器缓存机制,如ServiceWorker、MemoryCache、DiskCache和PushCache的作用与策略,以及缓存对性能优化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、从输入地址到显示页面的过程

  • 解析DNS,获得真实IP

  • TCP三次握手
    客户端向服务器发送连接请求报文,SYN=1,ACK=0
    服务器发送连接确认报文,SYN=1,ACK=1
    客户端收到确认报文后,向服务端发送确认,ACK=1

  • TLS握手加密
    非对称加密获得密钥
    对称加密传输信息

  • 服务器返回数据

  • 浏览器判断状态码
    1xx:信息类
    2xx:响应成功
    3xx:重定向类
    4xx:客户端错误
    5xx:服务器错误

  • 解析文件,建立相应的数据结构

  • 载入解析的资源文件,渲染页面

2、缓存机制

作用

  • 性能优化:显著减少网络传输带来的损耗
  • 数据请求包括:网络请求、后端处理、浏览器响应三部分,浏览器缓存在第一和第三步骤中优化性能
  • 缩短资源请求距离,减少延迟
  • 缓存可重复利用,减少带宽,降低网络负荷

缓存位置

  • Service Worker
    优先级最高,运行在浏览器背后的独立线程,可控制缓存那些文件,如何匹配、读取缓存,持续性
  • Memory Cache
    内存缓存,速度快,容量小,关闭Tab页面即释放
  • Disk Cache
    硬盘缓存,容量较大,大部分缓存在这里
  • Push Cache
    推送缓存,在session中存在,结束即释放,缓存时间短暂,一般5分钟

缓存策略:设置HTTP Header

  • 强缓存:优先级更高
    1、Expires:缓存过期时间
    2、Cache-Control:控制网页缓存,优先级更高
    no-store:所有内容都不缓存
    no-cache:浏览器使用缓存数据时确认是否需要更新资源
    private:所有内容只有客户端可以缓存
    public:客户端和代理服务器都可缓存
    max-age:缓存内容将在多少秒后失效
  • 协商缓存
    1、ETag:优先级更高
    服务器响应请求时,返回当前资源文件的唯一标识,资源有变化就会重新生成ETag
    将ETag值放到If-None-Match中,服务器进行判断
    2、Last-Modified
    资源在服务器上的最后修改时间
    浏览器添加If-Modified-Since这个header,与服务器中最后修改时间对比
    缺点
    只能以秒及时,在秒内修改不会被计入修改
    本地打开会造成修改
    3、协商缓存步骤
    协商缓存失效,则携带缓存标识发起HTTP请求
    304,该资源无更新,从缓存获取结果
    200,资源有更新,更新浏览器缓存
    未设置缓存策略
    响应头的Date减去Last-Modified值的10%作为缓存时间

缓存步骤

1、浏览器向服务器发送HTTP请求
2、在浏览器缓存中进行查找
3、若没有缓存,则再次向服务器发送HTTP请求,到4
3、若有缓存,是否过期
未过期,返回缓存数据
已过期,协商缓存,到4
4、服务器返回请求结果和缓存规则
5、将该结果和缓存标识存入浏览器缓存中

应用场景

  • 频繁变动的资源
    使用Cache-Control:no-cache请求服务器验证资源是否有效
  • 不常变化的资源
    给Cache-Control配置很大的max-age,在文件名中添加hash版本号等动态字符,之后更改动态字符来更改引用URL

用户行为

  • 地址栏输入地址
    查找Disk cache中是否有匹配,有则使用,没有则发送网络请求
  • 普通刷新
    优先使用memory cache
  • 强制刷新
    浏览器不使用缓存,请求头部带有no-cache,服务器返回200和最新内容
    参考自 深入理解浏览器的缓存机制:https://www.jianshu.com/p/54cc04190252
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值