首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >HTTP 重试与退避:客户端最小策略(JS 与 Go 对照)

HTTP 重试与退避:客户端最小策略(JS 与 Go 对照)

作者头像
安全风信子
发布2025-11-18 15:57:52
发布2025-11-18 15:57:52
880
举报
文章被收录于专栏:AI SPPECHAI SPPECH

一句话承诺:两段代码实现指数退避 + 上限控制,稳健重试。



JavaScript 示例

代码语言:javascript
复制
async function fetchWithRetry(url, max=5) {
  let delay = 200; // ms
  for (let i=1; i<=max; i++) {
    try { return await fetch(url); }
    catch (e) { if (i===max) throw e; }
    await new Promise(r => setTimeout(r, delay));
    delay = Math.min(delay * 2, 5000);
  }
}

Go 示例

代码语言:javascript
复制
func GetWithRetry(url string, max int) (*http.Response, error) {
  delay := 200 * time.Millisecond
  for i := 1; i <= max; i++ {
    resp, err := http.Get(url)
    if err == nil && resp.StatusCode < 500 { return resp, err }
    if i == max { return resp, err }
    time.Sleep(delay)
    if delay < 5*time.Second { delay *= 2 }
  }
  return nil, fmt.Errorf("retry failed")
}

选项速查

项目

建议

最大重试

3-5 次

初始延迟

200ms

上限

5s


常见坑与替代法

  • 坑:重试打爆后端。替代:只对幂等请求与 5xx 做重试,限流。
  • 坑:重试阻塞用户。替代:后端推送与缓存兜底。

下一篇预告

Web 性能测量:Lighthouse CLI 与关键指标采集。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaScript 示例
  • Go 示例
  • 选项速查
  • 常见坑与替代法
  • 下一篇预告
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档