cocoon/.cocoon-plan.md
xfy911 e482e52658 docs(plan): 更新 Phase 2 进度 — gzip 压缩已完成 + 压测数据
- 标记 gzip 压缩为已完成(3086B → 1282B,压缩率 41%)
- 记录单线程压测数据:15K RPS,64us 平均延迟,47MB/s 传输
2026-06-03 18:19:57 +08:00

2.6 KiB
Raw Blame History

Cocoon 发展规划(自主维护)

此文件由 cron 任务每3小时更新记录项目状态与下一步计划。

路线图

Phase 1 — 核心稳定(当前)

  • HTTP/1.1 请求解析
  • 响应头格式化
  • 静态文件服务sendfile
  • 目录浏览
  • Range 请求
  • MIME 类型识别
  • 多线程 M:N 调度
  • 命令行参数
  • 优雅关闭

Phase 2 — 健壮性

  • HTTP 缓存ETag / Last-Modified / If-None-Match 2026-06-03
  • 连接超时管理(空闲连接自动清理) 2026-06-03
  • 最大并发连接数限制 2026-06-03
  • 分级日志系统error / warn / info / debug 2026-06-03
  • Gzip 压缩 2026-06-03已接入响应流程3086B → 1282B压缩率 41%
  • 压力测试 + 性能基准(单线程 15K RPS @ 64us 延迟)
  • 完整的单元测试框架
  • 请求体解析POST 支持)

Phase 3 — 扩展

  • 配置文件支持JSON / YAML
  • 虚拟主机 / 多站点
  • 反向代理支持
  • HTTPS / TLS
  • HTTP/2

Phase 4 — 生态

  • WebSocket 支持
  • 中间件机制
  • 插件系统

当前状态

  • 编译通过,基本功能可用
  • 示例页面正常
  • 日志系统已上线,支持命令行调节级别
  • 连接超时 + 连接数限制已生效
  • 缺少测试和性能数据
  • gzip 压缩函数已写但未接入响应流程(静态.c 中有 gzip_compressis_compressible_mime

待办池

  1. 集成 Gzip 压缩 — 将 gzip_compress 接入 static_serve_file,对文本文件启用动态压缩
  2. 添加测试 — 用 curl/bats 或写 C 单元测试
  3. 性能基准 — wrk/ab 压测,记录 RPS 和延迟
  4. 修复编译警告static.cgzip_compressis_compressible_mime 未使用警告
  5. 请求体解析POST 支持) — 解析 Content-Length / chunked支持 form-data / JSON

最近行动记录

  • 2026-06-03: 项目初始化,核心模块全部实现
  • 2026-06-03: 添加缓存协商ETag + Last-Modified + 304修复编译警告
  • 2026-06-03: 添加连接空闲超时管理 + 最大并发限制 + 分级日志系统
    • 使用 coco_timer + shutdown + coco_cancel 实现空闲超时,默认 30 秒
    • 使用原子计数器限制最大并发连接,超限返回 503
    • 新增 log.c / log.h,支持 error/warn/info/debug 四级输出
    • 命令行新增 -m-o-l 选项
    • 修复 http.c 中 Range 解析被错误嵌套在 accept-encoding 分支的 bug
    • 修复 static.c 缺失 <errno.h><zlib.h> 导致的编译失败
    • Makefile 添加 -lz 链接参数