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

为何finnhub.io请求每次返回相同响应,仅刷新页面才更新?

问题原因分析

1. Finnhub 接口重复返回相同响应的核心原因:HTTP 缓存

Finnhub 的 API 响应头大概率设置了强缓存规则(比如 Cache-Control: max-age=xxx 或 Expires),Node.js 中的 Axios 默认遵循 HTTP 缓存机制——第一次请求后,响应会被本地缓存,后续相同 URL 的请求直接读取缓存内容,不会真的发送请求到 Finnhub 服务器。

而你刷新页面时,浏览器会自动添加 Cache-Control: no-cache 这类请求头,强制服务器返回最新数据、绕过本地缓存,所以能拿到新价格;但刷新后的重复调用又回到默认缓存逻辑,因此还是旧数据。

2. Polygon.io 接口每次响应变化的原因

Polygon.io 虽然提供的是延迟15分钟的数据,但它的 API 没有设置长时效的缓存规则,或者缓存时间极短。每次请求都会直接向服务器发起,而服务器那边的延迟数据是持续更新的(比如每分钟刷新一次延迟版本),因此你每次请求都能拿到当前最新的延迟数据,自然响应会变化。

解决 Finnhub 缓存问题的方案

在 Axios 请求中添加禁用缓存的请求头,强制每次请求都从服务器获取最新数据:

ApiRequest = function () {
  const currentPriceURL = `https://finnhub.io/api/v1/quote?symbol=SPY&token=` + API_KEY;

  axios.get(currentPriceURL, {
    headers: {
      'Cache-Control': 'no-cache',
      'Pragma': 'no-cache',
      'Expires': '0'
    }
  })
    .then(response => {
      var price = response.data.c;
      console.log("price= " + price);
    }).catch(error => console.error(`Error: ` + error));
}

let DisplaySpyPrice_Timer = setInterval(ApiRequest, 1000);

另外需要注意:Finnhub 有请求频率限制,每秒1次的请求频率可能触发限流,建议查看它的官方规则调整请求间隔,避免被封禁。

内容的提问来源于stack exchange,提问作者Seth Schaffner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:04:54