From b2da4233126192e799e6242317c0ba79423451a5 Mon Sep 17 00:00:00 2001 From: Snowz <372492339@qq.com> Date: Sun, 25 Jan 2026 03:12:10 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BB=A5=E8=AE=B0=E5=BD=95=E6=9C=80=E8=BF=91?= =?UTF-8?q?=E7=9A=84=E7=A8=B3=E5=AE=9A=E6=80=A7=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将并发健壮性提升和稳定性修复的条目从未来日志位置移到正确的近期更新(2026-01-25)下,并移除重复的旧条目。 --- README.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 607e17f..96c1682 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,15 @@ ## 更新日志 +- **2026-01-25**: + - 并发健壮性提升: + - 实现 **请求合并 (Request Coalescing)**:当多个客户端同时请求同一个未缓存的 URL 时,复用同一个回源请求,避免瞬间高并发流量击穿上游 (Thundering Herd)。 + - 实现 **原子化缓存写入 (Atomic Write)**:使用“写临时文件 + 重命名”策略,确保缓存文件在写入过程中不会被读取到不完整的数据,彻底解决并发读写导致的文件损坏问题。 + - **稳定性修复**: + - 修复了在请求合并逻辑中因 Promise 链处理不当导致的 `Unhandled Promise Rejection` 崩溃问题。 + - 增加了文件流读取的错误监听,防止因文件系统异常导致的进程退出。 + - 增加了全局异常捕获 (`uncaughtException`, `unhandledRejection`),确保服务在极端异常下记录日志而不崩溃。 + - **2026-01-20**: - 重构代码,提取核心代理逻辑。 - 新增 `checkPort443` 函数,实现目标主机的 SSL/HTTPS 自动检测。 @@ -56,10 +65,4 @@ - 新增备用接口机制:当 mShots 返回无效图片(如生成中 GIF)或失败时,自动降级尝试使用 `thum.io` 获取截图,确保高可用性。 - 性能优化:将关键路径上的同步文件 I/O (readFileSync/writeFileSync) 替换为异步操作 (fs.promises),防止高并发下 Event Loop 阻塞导致服务无响应。 - 用户体验优化:当在浏览器中直接访问 API (Accept: text/html) 时,返回一个带有加载动画的 HTML 页面,解决等待过程中的白屏问题。 - - 并发健壮性提升: - - 实现 **请求合并 (Request Coalescing)**:当多个客户端同时请求同一个未缓存的 URL 时,复用同一个回源请求,避免瞬间高并发流量击穿上游 (Thundering Herd)。 - - 实现 **原子化缓存写入 (Atomic Write)**:使用“写临时文件 + 重命名”策略,确保缓存文件在写入过程中不会被读取到不完整的数据,彻底解决并发读写导致的文件损坏问题。 - - **稳定性修复**: - - 修复了在请求合并逻辑中因 Promise 链处理不当导致的 `Unhandled Promise Rejection` 崩溃问题。 - - 增加了文件流读取的错误监听,防止因文件系统异常导致的进程退出。 - - 增加了全局异常捕获 (`uncaughtException`, `unhandledRejection`),确保服务在极端异常下记录日志而不崩溃。 + \ No newline at end of file