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

为何调用随机颜色API无法获取新结果?

问题解决:随机颜色API调用结果重复的问题

问题描述

我正在制作一个随机颜色生成器,刷新页面或点击生成按钮时,调用API得到的结果始终相同,但直接刷新API站点页面时,返回的信息是随机变化的。

相关信息:

  • API地址:https://www.colr.org/json/colors/random/5
  • 演示地址:https://codepen.io/penny289/pen/YzaBggG?editors=0010

问题原因

这是因为浏览器会对GET请求的响应进行缓存,重复调用相同API地址时,浏览器直接返回缓存的旧结果,而非向服务器发起新请求。但直接刷新API站点页面时,浏览器会强制绕过缓存,因此能获取新的随机颜色。

解决方案

可以通过两种方式禁用请求缓存,让每次调用都获取新结果:

方法1:添加随机参数到URL

在URL末尾追加时间戳或随机数,让浏览器识别为新请求:

const BASE_URL = 'https://www.colr.org/json/colors/random'
const colorCardsTotal = '5'
function getColors(){
  // 追加时间戳作为唯一参数
  const timestamp = new Date().getTime();
  axios.get(`${BASE_URL}/${colorCardsTotal}?t=${timestamp}`)
  .then(function (response) {
    console.log(response.data.colors)
  })
  .catch(function (error) {
    console.log(error)
  })
}

getColors()

方法2:设置请求头禁用缓存

通过请求头告知浏览器不要缓存该请求:

const BASE_URL = 'https://www.colr.org/json/colors/random'
const colorCardsTotal = '5'
function getColors(){
  axios.get(`${BASE_URL}/${colorCardsTotal}`, {
    headers: {
      'Cache-Control': 'no-cache, no-store, must-revalidate',
      'Pragma': 'no-cache',
      'Expires': '0'
    }
  })
  .then(function (response) {
    console.log(response.data.colors)
  })
  .catch(function (error) {
    console.log(error)
  })
}

getColors()

原始代码

JavaScript代码

const BASE_URL = 'https://www.colr.org/json/colors/random'
const colorCardsTotal = '5'
function getColors(){
  axios.get(BASE_URL+'/'+colorCardsTotal)
  .then(function (response) {
    console.log(response.data.colors)
  })
  .catch(function (error) {
    // 处理错误
    console.log(error)
  })
}

getColors()

HTML代码

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>

内容的提问来源于stack exchange,提问作者Penny Chang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:27:39