跳至正文

Cocos图片压缩插件重磅升级:修复连续压缩报错问题

更新说明

  • 修复连续压缩引起的报错问题(错误提示为:“error: Too many files uploaded at once.”)。实测了连续压缩几百张,没有再报错。
  • 如果还有其它未知原因导致的报错,一般来说再压缩一次就好了。插件内置md5缓存机制,只要缓存不主动清除,那么下次压缩同一张图片就直接用缓存,绝对不会重复压缩。
  • 新版插件昨天提交Cocos商店,发稿时还没审核通过。如果有着急使用的朋友,可私信我单独发。
  • 下载链接:
    超强图片压缩(Creator 2.x版本) https://store.cocos.com/app/detail/6771
    超强图片压缩(Creator 3.x版本) https://store.cocos.com/app/detail/5438

以下是Codex写的详细更新说明:

图片压缩插件v1.11版本-更新说明:批量压缩稳定性优化

本次更新针对 Cocos Creator 图片压缩插件在批量处理时遇到的连接中断、超时问题,新增自动退避重试与批次保护机制,并完善错误日志和结果统计。遇到临时错误时,插件会先等待并尝试恢复,减少后续图片连续报错的情况。

主要更新

1. 调整逐张压缩间隔

保持串行处理,在处理下一张待压缩图片前,随机等待 3–5 秒,降低连续上传的频率,在处理速度与稳定性之间做平衡。命中本地缓存的图片无需远程上传,也不受这一上传间隔影响。

2. 新增自动退避重试

遇到以下临时错误时,插件会保留当前图片,等待后重新尝试,而不是立即跳到下一张:

  • 上传数量限制,例如 HTTP 429Too many files uploaded at once
  • 服务端临时异常,例如 HTTP 5xx
  • 上传或下载过程中的连接中断、连接重置和超时。

同一张图片最多额外重试 3 次,默认依次等待 60 秒、120 秒、240 秒。如果服务器通过 Retry-After 指定了更长的等待时间,插件会优先遵守;同时支持秒数和日期两种格式。

重试成功后,继续处理剩余图片,重试次数不会重复计入图片进度。普通、不可重试的单张图片错误仍会记录为失败,并继续处理下一张。

3. 新增持续异常保护

如果重试次数耗尽后仍然限流、连接失败或服务不可用,插件会停止本批次,不再继续上传剩余图片,避免整批连续报错。

已经成功写入的缓存会保留。稍后重新执行压缩时,插件会复用匹配的缓存,减少重复上传。恢复处理需要重新启动压缩任务,并不是后台无限重试。

4. 完善错误日志

上传失败时,日志会显示 HTTP 状态码、服务端错误码、错误描述、Retry-After 和对应的图片路径。网络连接问题则记录 ECONNRESETETIMEDOUT 等错误码,方便区分服务端限流与网络故障。

例如,以下日志表示当前图片被限流,等待后重试成功,并不代表这张图片最终压缩失败:

压缩错误: 120/178, HTTP:429, code:too_many_requests, message:Too many files uploaded at once., Retry-After:-, 源文件:…/a_180.png
压缩退避: 120/178, HTTP:429, code:too_many_requests, 60秒后重试 1/3, 源文件:…/a_180.png
压缩进度: 120/178, 压缩前:8.21KB, 压缩后:3.08KB, 压缩率:62.48%

Retry-After:- 表示服务器没有提供建议等待时间,此时使用插件的默认退避时间。

5. 加强下载与任务流程保护

  • 上传、下载请求新增 60 秒无活动超时处理,避免连接长时间无响应时一直等待;这不是整张图片处理的总时长上限。
  • 下载返回错误 HTTP 状态时,不再将错误响应内容写入源图片。
  • 增加上传流程回调去重,避免多个异常事件导致同一张图片重复推进队列。
  • 等待当前图片的缓存写入回调结束后,再处理下一张或输出批次结果。

6. 完善结果统计与命令行反馈

批次结束时,分别显示图片总数、缓存命中数、压缩成功数、失败数和未处理数。因持续异常停止时,明确显示“处理中止”,不再将全部待压缩图片笼统计为本次压缩数量。

命令行运行时,如果批次存在失败或未处理图片,进程会以退出码 1 结束,便于外部脚本识别未完成的任务。原有命令行参数保持不变。

使用提示

  • 看到“压缩退避”时,请先等待自动重试,避免反复启动多个压缩任务。
  • 如果显示“处理中止”,请稍后重新运行,并保留已有缓存。
  • 不建议为了重试而清空缓存,这会增加需要重新上传的图片数量。
  • 本次更新改善了临时错误的恢复能力,不代表取消或绕过服务端限制。实际耗时会随图片数量、网络情况和服务端限制变化;等待和重试也会增加总耗时。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注