Skip to content

SmartRetryPlugin — 智能重试

优先级:10

上传失败时自动重试,支持三种重试策略,智能错误过滤。

基础用法

ts
import { SmartRetryPlugin } from "@file-ud.js/plugins/retry";

uploader.use(new SmartRetryPlugin({
  maxRetries: 3,
  strategy: "exponential",
  initialDelay: 1000,
  maxDelay: 30000,
}));

配置参数

参数类型默认值说明
maxRetriesnumber3最大重试次数
strategystring"fixed"重试策略:fixed / exponential / linear
initialDelaynumber1000初始延迟(ms)
maxDelaynumber30000最大延迟(ms)

重试策略

Fixed — 固定延迟

每次重试间隔相同:

ts
uploader.use(new SmartRetryPlugin({
  maxRetries: 3,
  strategy: "fixed",
  initialDelay: 2000,   // 每次等待 2s
}));
// 重试间隔:2s → 2s → 2s

Exponential — 指数退避

延迟时间指数增长,减轻服务器压力:

ts
uploader.use(new SmartRetryPlugin({
  maxRetries: 3,
  strategy: "exponential",
  initialDelay: 1000,
  maxDelay: 30000,      // 最大不超过 30s
}));
// 重试间隔:1s → 2s → 4s → 8s ...

Linear — 线性增长

延迟时间线性递增:

ts
uploader.use(new SmartRetryPlugin({
  maxRetries: 3,
  strategy: "linear",
  initialDelay: 1000,
}));
// 重试间隔:1s → 2s → 3s

使用场景

不稳定网络环境

ts
uploader.use(new SmartRetryPlugin({
  maxRetries: 5,
  strategy: "exponential",
  initialDelay: 2000,
  maxDelay: 60000,
}));

快速失败场景

ts
uploader.use(new SmartRetryPlugin({
  maxRetries: 1,
  strategy: "fixed",
  initialDelay: 500,
}));

策略对比

策略适用场景特点
fixed偶发失败,快速恢复简单直接
exponential服务器过载、网络波动逐步降低请求频率
linear需要平衡恢复速度介于两者之间

基于 MIT 协议发布