泰勒·肯尼迪

主要观点:正确解析 URL 很难,WHATWG 的 URL 规范虽有助于标准化但未普及;Python 中内置的urllib模块不符合任何 URL 规范;Ada 项目是新的遵循 WHATWG 规范且快速的 URL 解析库,有 Python 绑定但性能有提升空间;can_ada 是新的 Python 绑定,使用 pybind11 生成代码更快且绑定定义简洁可读,已提供多个 Python 版本的二进制构建。

关键信息:

  • URL 定义自 1994 年以来有很大演变,WHATWG 规范虽有帮助但不通用。
  • urllib模块存在多年但不符合 RFC3986 或 WHATWG 规范,且因依赖众多项目难有重大改变。
  • Ada 项目 2024 年创建,解析速度快,Node.js 18 起使用,其 Python 绑定 ada-python 基于 CFFI 性能有损失。
  • can_ada 用 pybind11 生成代码,比 ada-python 快约 2 倍,比urllib.parse快约 4 倍,代码简洁可读,可通过 pip 安装。

重要细节:

  • 浏览器能接受含数千个斜杠的 URL,但规范不应如此。
  • urllib模块的测试用例可反映其解析行为。
  • Ada 解析 7 个 URL 耗时约为 cURL 的 1/7。
  • can_ada 的性能测试数据及对比情况。
  • can_ada 的安装方式及示例代码展示正确解析的域名和路径。
阅读 17
0 条评论