Sukka 写前端、网络和基础设施时,习惯先把边界和代价摊开。把「2023:浏览器从 A 到 Z | Sukka's Blog」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。

A

AssemblyScript 是一个语法和 TypeScript 接近、但是编译产物是 WebAssembly 的语言。过去我用 AssemblyScript 重写了 cidr-tools ,把性能翻了一倍( cidr-tools-wasm );不过后来我用 TypeScript 又重写了一遍,结果性能再翻了 10 倍( fast-cidr-tools )。事实上,在计算密集型的场景下 AssemblyScript 的优势也不一定明显。

今年新买了一台 MacBook Pro 16' M2 Max 64G 2 TiB 作为我的主力机、换掉了之前的装了黑苹果的 Lenovo Legion Y9000X 2020。

B

过去一年,我逐步用 bgp.tools 代替了 bgp.he.net 作为我的 BGP 查询工具。bgp.tools 支持查看某一个广播的的 prefixes 的 Connectivity 路由图、而 bgp.he.net 仅支持查看一个 ASN 全部广播的 prefixes 的汇总 Connectivity 路由图。

Bun 是一个基于 JavaScriptCore 和 WebKit、使用 Zig 编写的 JavaScript Runtime,自带编译器和打包器、支持直接执行 TypeScript 和 JSX/TSX。我把 Sukka/Surge 项目(自用的 Surge 规则组)从 Node.js 迁移到 Bun,加上基于 SQLite 的 Cross Build Cache 以后,项目的编译时间从 31 秒缩短到 10 秒。

C

查询 Web API 和 ECMAScript Feature 的浏览器兼容性,部分数据来自 MDN 的 Compat Table。

Dashflare 是我使用 React 编写的,基于 Cloudflare API 的非官方 Cloudflare 控制面板。4 年前用 Cloudflare Partner(Legacy SKU)的方式启用了 Cloudflare 的 CNAME Setup,但是自从 Cloudflare Partner Legacy 被 EOL 以后,Cloudflare Partner API 就无法使用了。所幸 Cloudflare Zone API 仍然可以被用来管理 DNS,所以我就用 React 写了一个不依赖任何服务器的、纯前端的控制面板,后来又陆陆续续加了「开关 IPv6」、「切换 Universal SSL 的 CA」、「切换 Universal SSL 验证方式」、「快速启用 ETag 支持」等功能。

D

Cloudflare 官方的控制面板。我时不时会上去检查一下各个网站和 API 的 Cache 命中率和 WAF 日志。

在 ESLint 的下一个大版本 ESLint 9.0.0,ESLint 决定弃用所有和格式化有关的规则(如缩进、换行、空行)、并将这些规则移除出 ESLint 项目。这些规则由 Anthony Fu 为首的 ESLint Stylistic 项目维护。

E

使用 React 的对 eslint-plugin-react 一定不会陌生。最早由 yannickcr 创建,现由 ljharb 劫持 维护。ljharb 为了无谓的「拒绝任何 Breaking Changes、兼容 Node.js 4」、引入了大量无用的 polyfill,不仅浪费磁盘空间、还拖累运行速度。 eslint-plugin-react 也不支持通过 TypeScript 获取类型信息,导致规则的准确性大打折扣。考虑到 ljharb 冥顽不化的 固执己见, Rel1cx 决定全新重写一版 React 的 ESLint Plugin @eslint-react/eslint-plugin 。目前我已经将 eslint-plugin-react 全部迁移到了 @eslint-react/eslint-plugin 上,并且我也推荐所有使用 TypeScript 的 React 项目进行迁移。

foxact 是我创立并活跃维护的开源 React Hooks/Utilities 库。即使目前已经有许多现成的 React Hooks 开源库,在阅读了它们的源码后,我觉得它们都不达标:阿里的 ahooks 在 Render Phase 期间读写 React Ref、并不 Concurrent Rendering Safe; usehooks-ts 在应该使用 useSyncExternalStore 的地方滥用 useEffect ; react-hookz/web 则有着一大堆过于抽象/错误的 Hooks 封装。因此我还是决定重复造一次轮子,维护一个 React 18 优先、支持 React Concurrent Rendering 和 React Server Component、TypeScript 友好的 React Hooks 库,目前 foxact 除了包含一些常用 Hooks 以外,还包含了一些 React 项目中常用的组件和实用函数。

F

fast.com 是 Netflix 提供的一个测速网站,所有测速节点都来自于 Netflix 的 CDN 节点。

2023 年,我在 GitHub 产生了 2664 次贡献,向 89 个开源项目贡献过代码,有 115 个来自我的 PR 被合并。

值得单独记下的点

  • 多数据来源 IP 地理位置查询 :同时向 12 个 GeoIP 数据库查询一个 IPv4 IP 的地理位置
  • UDP IP 出口查询 :在浏览器中测试 TCP 和 UDP 是否共享同一个 IP 出口
  • 完全在浏览器中执行、无需服务器的图片自动去除背景工具
  • 使用 NextDNS API 查看 NextDNS 完整的解析日志
  • https://ruleset.skk.moe/List/domainset/reject.conf :通过 GitHub Actions 每日从 uBlock Origin、AdGuard、EasyList 等 30 余常用 AdBlock 规则组中,解析筛选出纯域名的、适用于 Surge 的规则,目前已有 30 万条域名。所有数据均来自上游, 零误杀 (如果真的出现误杀,会影响全世界所有 AdGuard、ADBlock Plus 用
  • https://ruleset.skk.moe/List/non_ip/sogouinput.conf :搜狗输入法相关规则。早在 2021 年我就已经发现搜狗输入法会使用 HTTP 明文上传用户配置文件和输入法输入记录,因此我维护了相关规则,可以在 Surge 中完全禁止搜狗输入法联网。
  • https://ruleset.skk.moe/List/domainset/cdn.conf 和 https://ruleset.skk.moe/List/domainset/download.conf :静态 CDN 类域名(不包含 Microsoft 和 Apple 在国内的 CDN 域名),一般分发图片、CSS、JS 等网页静态文件或软件更新、操作系统更新,一般无 WAF 和风控,属于低优先级流量。
  • https://ruleset.skk.moe/List/ip/china_ip.conf :基于 chnroute2 的中国 IP 列表,比 MaxMind GeoLite2 和 Clash.Meta 的 GEOSITE 数据准确得多。

落地时建议先做的 5 件事

  1. 用自己的流量和设备测,不要只抄厂商推荐最小配置。
  2. DNS、CDN、代理分流先画清 Fake IP 和 Real IP 的边界。
  3. 前端性能看 CLS、白屏和重复渲染,而不是只看打包体积。
  4. 基础设施变更走 Git,能复现、能回滚。
  5. 结论写成可检查的清单:接口、超时、失败样本、回滚版本。

和智能体产品怎么接

龙虾PRO做 OpenClaw 落地时,网络、DNS 和前端性能笔记最有用的是「边界」:哪一层该加速、哪一层不该假装智能。数字员工调用外部能力前,先把超时和失败路径写死。

本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源

常见问题 FAQ

什么是AI智能系统?

「AI智能系统」可概括为:AssemblyScript 是一个语法和 TypeScript 接近、但是编译产物是 WebAssembly 的语言。过去我用 AssemblyScript 重写了 cidr-tools ,把性能翻了一倍( cidr-tools-wasm );不过后来我用 TypeScript 又重写了一遍,结果性能再翻了 10 倍( fast-cidr-tools )。 本文从定义、方法与实践要点展开说明。

为什么要关注AI智能系统?

关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:AssemblyScript 是一个语法和 TypeScript 接近、但是编译产物是 WebAssembly 的语言。过去我用 AssemblyScript 重写了 cidr-tools ,把性能翻了一倍( cidr-tools-wasm );不过后来我用 TypeScript 又重写了一遍,结果性能再翻了 10 倍( fast-cidr-tools )。事实上,在计算密集型的场景下 AssemblyScript 的优势也不一定明显。

如何落地AI智能系统?有哪些关键步骤?

建议按以下路径推进AI智能系统:1) 多数据来源 IP 地理位置查询 :同时向 12 个 GeoIP 数据库查询一个 IPv4 IP 的地理位置;2) UDP IP 出口查询 :在浏览器中测试 TCP 和 UDP 是否共享同一个 IP 出口;3) 完全在浏览器中执行、无需服务器的图片自动去除背景工具;4) 使用 NextDNS API 查看 NextDNS 完整的解析日志;5) https://ruleset.skk.moe/List/non_ip/sogouinput.conf :搜狗输入法相关规则。早在 2021 年我就已经发现搜…。细节见正文对应章节。

AI智能系统适合哪些人或团队?

AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。

关于「值得单独记下的点」,本文给出了什么结论?

「值得单独记下的点」是理解全文的关键切片:建议先读该节的结论句与列表项,再对照前后章节形成闭环。

关于「落地时建议先做的 5 件事」,本文给出了什么结论?

「落地时建议先做的 5 件事」是理解全文的关键切片:建议先读该节的结论句与列表项,再对照前后章节形成闭环。