feat(server): 实现请求合并和原子化缓存写入提升并发健壮性
- 新增请求合并机制,避免相同URL的高并发回源请求 - 采用原子化写入策略(临时文件+重命名)防止并发读写导致文件损坏 - 重构核心处理逻辑,将缓存操作提取为独立函数 - 优化错误处理和缓存兜底逻辑
This commit is contained in:
@@ -56,3 +56,6 @@
|
||||
- 新增备用接口机制:当 mShots 返回无效图片(如生成中 GIF)或失败时,自动降级尝试使用 `thum.io` 获取截图,确保高可用性。
|
||||
- 性能优化:将关键路径上的同步文件 I/O (readFileSync/writeFileSync) 替换为异步操作 (fs.promises),防止高并发下 Event Loop 阻塞导致服务无响应。
|
||||
- 用户体验优化:当在浏览器中直接访问 API (Accept: text/html) 时,返回一个带有加载动画的 HTML 页面,解决等待过程中的白屏问题。
|
||||
- 并发健壮性提升:
|
||||
- 实现 **请求合并 (Request Coalescing)**:当多个客户端同时请求同一个未缓存的 URL 时,复用同一个回源请求,避免瞬间高并发流量击穿上游 (Thundering Herd)。
|
||||
- 实现 **原子化缓存写入 (Atomic Write)**:使用“写临时文件 + 重命名”策略,确保缓存文件在写入过程中不会被读取到不完整的数据,彻底解决并发读写导致的文件损坏问题。
|
||||
|
||||
Reference in New Issue
Block a user