存储机制
快速阅读 浏览器的存储机制主要包括 Cookie、Web Storage、CacheStorage 和 IndexedDB。 Cookie 是最早的存储机制,单条 Cookie 容量约 4KB,会 随每个同域请求自动发送,主要用于会话管理和身份识别,可以通过 HttpOnly、Secure、SameSite 等属性提高安全性。会话 Cookie 存储在内存中,关闭浏览器后会自动清除;持久 Cookie 存储在磁盘中,到期前一直有效。 Web Storage(即 localStorage 和 sessionStorage)是简单的 同步键值对存储,键值对的总和不超过 5MB,数据不会随请求发送。localStorage 在磁盘中持久存储、跨标签页共享;sessionStorage 主要存储在内存中,绑定单个标签页、关闭即清除。 CacheStorage 是 代码驱动的缓存接口,每个 Cache 对象下存放的是 Request/Response 对,数据在磁盘中持久化存储,不会自动过期,通常在 Service Worker 中使用,以实现离线缓存和请求拦截。 IndexedDB 是 ...
缓存机制
快速阅读 浏览器的缓存机制是浏览器为了 减少网络请求、加速页面访问 而设计的多层体系,主要包括 HTTP 缓存、SW Cache 和 bfcache 三类。 当一个请求从页面发出时,如果页面注册了 Service Worker 且其 fetch 事件拦截了该请求,开发者编写的缓存策略会先决定是从 SW Cache 返回还是发送网络请求。 当请求未被 Service Worker 拦截或不符合条件时,会进入 HTTP 缓存层,由浏览器根据 Cache-Control 和 ETag 等响应头自动判断能否复用本地的响应副本。 bfcache 不在这个请求链路上,它是浏览器在用户离开页面时把整个页面快照冻结在内存中的机制,用户点击前进或后退按钮返回页面时可以瞬间恢复,不用重新请求资源。 SW Cache 的优先级最高,由前端 JS 代码控制;HTTP 缓存位于其后,由浏览器自动执行;bfcache 独立于请求链路,用于管理整个页面实例的往返恢复。 HTTP 缓存 基本概念 HTTP 缓存是浏览器缓存机制最核心的部分,浏览器会在本地存储服务器的响应副本,以便后续请求直接复用,从而减少延迟...
HTTP 版本
快速阅读 HTTP 的主要版本包括 HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2 和 HTTP/3。 HTTP/0.9 是 HTTP 协议的早期原型(不是正式发布的版本),HTTP/1.1 长期作为事实标准,而 HTTP/2 和 HTTP/3 是当前主流的 性能优化版本(主要是针对队头阻塞问题的优化)。 HTTP 协议的主要使用场景是浏览器,桌面应用和手机 App 调用后端接口、获取数据、上传文件,绝大多数也是 HTTP/HTTPS 协议。 HTTP 的版本选择是浏览器和服务端底层框架之间 自动协商 的结果,通常 不需要手动设置。 HTTP/0.9 基本概念 HTTP/0.9 是 HTTP 协议的最初实现版本,公开于 1991 年,它只是早期原型,没有经历正式的标准化发布流程,为了与后续版本区分,才被非正式地命名为 HTTP/0.9。 HTTP/0.9 的设计目标是为了在互联网上实现一种极简的超文本传输机制,让客户端能够从服务器获取 HTML 文档。 核心特征 1. 请求格式只有一行 请求由单行 ASCII 文本构成,格式为 GET /path/to/fi...
HTTP 状态码
快速阅读 HTTP 状态码是服务器返回给客户端的 三位数字标识,代表本次请求的处理结果。 状态码按首位数字划分为 五个类别。 HTTP 状态码的含义是有标准规定的,对应的原因短语通常也是固定的,但原因短语 不作为逻辑依赖,理论上只要符合字符规范就可以随便写。 信息类 1xx 状态码表示 服务器已收到请求,正在处理。它们是 临时响应,不是最终结果。 状态码 原因短语 说明 100 Continue 服务器已收到完整请求头,愿意继续接收请求体 101 Switching Protocols 服务器同意将当前连接从 HTTP 协议切换到另一种协议 成功类 2xx 状态码表示 服务器已成功处理了客户端的请求,这是最常见的状态码类别。 状态码 原因短语 说明 200 OK 服务器成功接收并处理了请求 201 Created 服务器创建了一个新资源,Location 字段指向新资源的地址 204 No Content 请求已被成功处理,但没有响应体 206 Partial Content 客户端请求了资源的一部分,服务器成功返回了这部分内容...
HTTP 请求
快速阅读 方法 安全 幂等 用途 GET 是 是 获取资源 HEAD 是 是 获取元信息 POST 否 否 提交数据 PUT 否 是 全量替换资源 PATCH 否 否 局部更新资源 DELETE 否 是 删除目标资源 OPTIONS 是 是 CORS 预检 TRACE 是 是 调试诊断 CONNECT 否 否 HTTPS 代理 GET 用途 GET 是 HTTP 协议中最常用的方法,作用是 从服务器获取资源,规范语义上属于 只读操作,不能修改服务器的数据。 GET 的使用场景有: 获取静态资源:HTML 页面、CSS、JS、图片、视频、音频等,可被浏览器 / CDN 缓存,提升访问速度; 例如:GET /index.html HTTP/1.1 查询接口,读取业务数据:列表查询、详情查询、搜索功能等; 例如:GET /api/article?id=1024 HTTP/1.1 页面跳转和分享链接:GET 的查询参数可以完整保留在 URL 中,可用于链接跳转。 例如:https://example.com/share?invite=...
HTTP 消息
基本结构 HTTP 消息分为 请求消息 和 响应消息,都由 4 个部分组成: 起始行:分为请求行和状态行,用来描述请求或响应的基本信息; 头部字段:若干行键值对,用于传递元信息,不承载主体数据; 空行:用 \r\n 分隔头部字段与消息正文,即使无正文也必须存在; 消息正文:承载业务主体数据的部分,位于空行之后,可选。 HTTP 消息 是标准术语,很多场景也称作 HTTP 报文,含义是一致的。 请求消息 请求行 请求行是请求消息的第一行,用来告诉服务器执行什么操作。 格式为 方法 SP 请求目标 SP HTTP版本 CRLF,例如: 1GET /index.html HTTP/1.1 SP 和 CRLF 是描述消息格式的记法,代表不可见的控制字符。SP 是 Space 的缩写,表示一个空格字符;CRLF 是 Carriage Return 和 Line Feed 的缩写,表示回车符与换行符的组合 \r\n。 方法 表示对目标资源执行的操作,必须大写。 请求目标 表示请求的资源位置,有 4 种形式: origin-form:最常见,路径 + 查询字符串,服务器依靠请求头里的...
QQ Bot
快速阅读 记录一个基于 OneBot 11 通信标准的 QQ 机器人应用的完整实现过程。 功能概述 通过与 QQ 机器人帐号对话调用 OneBot Server 应用层提供的服务。 通过 /upload 指令上传群文件到服务器; 通过 /remote <指令> 发送 RCON 命令到 Left 4 Dead 2 服务器,并回传执行结果; 通过 /help 指令获取所有插件的使用说明; 直接和大模型进行对话,支持输入文本、图片、视频、文件等内容。 核心节点 NapCat 协议层:负责把 QQ 底层消息封装成 OneBot 标准,并与应用层进行通信; OneBot Server 应用层:负责解析协议层推送的事件并调用相应的插件进行处理; LLM API Server 接口层:提供通用的大模型对话服务。 运行效果 协议层 协议层为 NapCat,是一个基于 NTQQ(PC 新版 QQ)的无头 Bot 协议端。 你也可以选择 OpenShamrock 等其他协议端,一般都是 OneBot 通信标准,它们的区别主要在于底层平台,例如 OpenShamrock...
解析几何
内容概要 写于 2020 年 5 月,文章介绍了一个关于高中数学 解析几何 相关题目的 快速解法。 此方法源于一本课外书上的速解公式,核心意义在于快速计算,能够避免在过于冗长的推导过程中写错某个参数导致整个计算过程出错。 原公式是用 Ax+ByAx+ByAx+By 直线式联立椭圆方程解出的,有些复杂。我做了一些优化,用 y=kx+my=kx+my=kx+m 联立,并扩展了抛物线公式,得出的结论经过化简后很容易记忆,所有解析几何类题目都可以使用。 推导过程 椭圆 以椭圆方程为例,推导过程如下: 联立 {x2a2+y2b2=1y=kx+m(如果是 y=kx−k,那么 m=−k)\begin{cases} \dfrac{x^2}{a^2}+\dfrac{y^2}{b^2}=1 \\ y=kx+m \quad(\text{如果是 }y=kx-k\text{,那么 }m=-k) \end{cases} ⎩⎨⎧a2x2+b2y2=1y=kx+m(如果是 y=kx−k,那么 m=−k) 得 (a2k2+b2)x2+2a2kmx+a2m2−a2b2=0(a^2k^2+b^2)x^2+2a...
相对运动
内容概要 写于 2020 年 5 月,文章介绍了一个关于高中物理 板块运动 相关题目的 快速解法。 此方法源于一本课外书上的例题,核心思想利用了运动的相对性,通过 变换参考系,将两个都在运动的物体转换为一个运动的物体和一个静止的物体,然后从 不同的视角(整体和单个物体)去分析问题,显著简化了思考过程和计算量。 在尝试用同样的思路解决其他运动问题时发现其局限性很大,因此我详细总结了它的适用场景和注意事项,并尝试将该方法的核心思想应用到其他力与运动类问题的解法中。 例题引入 一个人复习好无聊,总是想偷懒~ 不如总结一下写过的一本资料,和大家分享一下。 这个方法叫 相对运动,是我从一本资料书上了解到的,主要针对 板块运动 类题目,解法会很简单。比如下面这道题: 题目描述 2015 · 高考全国卷 II 下暴雨时,有时会发生山体滑坡或泥石流等地质灾害。某地有一倾角为 θ=37∘(sin37∘=35)\theta=37^\circ\left(\sin37^\circ=\dfrac{3}{5}\right)θ=37∘(sin37∘=53) 的山坡 CCC,上面有一质量为 mmm 的石板 ...
MD 参考文档
快速阅读 Markdown 是一种轻量级标记语言,由 John Gruber 于 2004 年创建。 它的核心思想可以用一句话概括:让文档易于阅读、易于书写,同时可以转换为结构化的 HTML。 主要特点 在 Markdown 出现之前,写网页内容通常要直接用 HTML,例如: 123456789<h1>整理书桌</h1><p>周末花了一个下午,把书桌重新整理了一遍,扔掉了<strong>不少东西</strong>。</p><ul> <li>过期的便签和收据</li> <li>用完的笔芯和空笔壳</li> <li>很久没翻开的旧杂志</li> <li>缠成一团的充电线</li></ul><p>桌面空出来之后,写东西的心情都好了很多。</p> HTML 表达能力很强,但问题也很明显: 标签太多,写一段话要打一堆尖括号。 纯文本状态下难读,不渲染就看不清结构。 ...









