You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome缓存指定端口所有API端点,本地修改后响应未更新求助

本地API服务器修改后响应未更新的排查与解决

核心结论

这不是Chrome的新特性,Chrome和Chromium的缓存逻辑基本一致,切换浏览器无法解决问题。核心原因是过度缓存,涉及浏览器端或服务器端的缓存配置问题。

排查与解决步骤

1. 检查并修正服务器端缓存配置

  • 确认API响应头是否包含强缓存规则:查看请求响应头中的Cache-Control、Expires字段,如果返回Cache-Control: public, max-age=xxx这类设置,浏览器会优先使用本地缓存。需要在后端代码中全局添加禁用缓存的响应头:
    • 示例(FastAPI中间件):
      from fastapi import FastAPI, Request, Response
      
      app = FastAPI()
      
      @app.middleware("http")
      async def disable_cache(request: Request, call_next):
          response = await call_next(request)
          response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
          response.headers["Pragma"] = "no-cache"
          response.headers["Expires"] = "0"
          return response
      
  • 检查服务器是否启用了内部缓存:部分后端框架、插件或本地反向代理(如Nginx)会默认开启响应缓存,需手动关闭这类配置。

2. 浏览器端缓存彻底清除

  • 调试时打开Chrome DevTools的Network面板,勾选顶部的Disable cache选项,保持DevTools开启状态下请求API,浏览器会完全跳过本地缓存。
  • 若强制刷新(Ctrl+Shift+R / Cmd+Shift+R)无效,可手动清除对应站点缓存:Chrome设置→隐私和安全→清除浏览数据→选择“缓存的图片和文件”,时间范围选“过去一小时”后执行清除。

3. Swagger文档未更新的处理

  • Swagger文档若为静态文件,可能被浏览器或服务器缓存:需在服务器配置中给Swagger相关资源添加禁用缓存的响应头,或重启服务器加载新生成的文档文件。
  • 部分Swagger实现会将文档存于内存,仅重新生成文件无法生效,必须重启服务器让新文档加载到内存中。

4. 不同端口缓存差异的原因

  • 浏览器按「协议+域名+端口」区分缓存空间,9892端口存在未过期的旧缓存,因此刷新无变化;9893为新端口,无历史缓存,所以能显示修改后的内容,这进一步验证了缓存问题。

5. 避免频繁更换端口的方案

  • 确保服务器开启热重载:使用框架自带的热重载功能(如FastAPI用uvicorn main:app --reload),修改代码后服务器自动重启加载新逻辑。
  • 全局配置禁用缓存响应头:如步骤1所述,从根源上避免浏览器缓存API响应。

内容的提问来源于stack exchange,提问作者Micheal J. Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:53:21