当前位置: 首页 > news >正文

js请求避免缓存的三种方式

要确保每次请求都获取最新的资源,而不是从浏览器缓存中读取旧的版本,可以采取以下几种方式:

方法一:在 URL 上添加随机查询参数(推荐)

这是最简单有效的方式之一。通过为请求的 URL 添加一个随机参数(如时间戳或随机字符串),可以绕过浏览器缓存。

export async function fetchRemoteJSAsText(url) {try {// 添加时间戳参数避免缓存const cacheBusterUrl = `${url}${url.includes('?') ? '&' : '?'}t=${Date.now()}`;const response = await fetch(cacheBusterUrl);if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const text = await response.text();return text;} catch (error) {showFailToast('网络不良,请重试');return null;}
}

方法二:设置 Cache-Control 和 Pragma 请求头

也可以通过设置请求头来告诉浏览器不要使用缓存:

// ... existing code ...
export async function fetchRemoteJSAsText(url) {try {const response = await fetch(url, {headers: {'Cache-Control': 'no-cache, no-store, must-revalidate',Pragma: 'no-cache',Expires: '0'}});if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const text = await response.text();return text;} catch (error) {showFailToast('网络不良,请重试');return null;}
}

⚠️ 注意:某些 CDN 或服务器可能会忽略这些请求头,因此建议结合 方法一 使用。

方法三:服务器端配置(最佳实践)

如果可以控制目标服务器,可以在响应头中加入以下内容,强制浏览器不缓存该资源:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

总结

  • 如果无法修改服务器配置,推荐使用 方法一(加随机参数)。
  • 如果你有权限控制服务器行为,方法三(服务端禁用缓存) 是最彻底的做法。
  • 方法二(设置请求头) 在大多数情况下也有效,但可能受服务器配置影响。
  • 可以选择其中一种或组合使用以确保每次都获取最新内容。
http://www.dtcms.com/a/266313.html

相关文章:

  • LiteHub中间件之限流实现
  • AI+Web3:从Web2到Web3的范式革命与深度技术实践
  • 智能电动汽车 --- 车辆网关路由缓存
  • 【烧脑算法】最小字典序:巧用单调栈,从栈底到最优解
  • 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级
  • Oracle如何使用序列 Oracle序列使用教程
  • 【牛客算法】小红的子序列逆序对
  • java类加载机制:Tomcat的类加载机制
  • 歌词引擎·FreeFlow
  • 【深度解析】Seedance 1.0:重新定义 AI 视频生成的工业级标准
  • 差分定位技术:原理、分类与应用场景
  • 接口测试之postman
  • UI评审时应该注意哪些方面才能有效保障交付质量
  • 深入理解JVM垃圾回收机制:引用计数法与可达性分析算法
  • 【Linux安装 OpenSSL 1.0.2 兼容包】
  • 【手动安装并启动后, 如何查看mysql数据库密码以及重置密码(centos8)】
  • 负载均衡--常见负载均衡算法
  • 【论文笔记】【强化微调】综述 - Think With Image
  • 二叉树题解——将有序数组转换为二叉搜索树【LeetCode】优化解法
  • 微软医疗AI诊断系统发布 多智能体协作实现疑难病例分析
  • 怎么处理[TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark
  • windows安装ELK
  • Nginx 的安装部署
  • Web后端开发(事务管理、AOP)
  • 倾斜摄影无人机飞行航线规划流程详解
  • 无人机Ku相控阵卫星通信系统技术说明
  • jQuery Mobile 安装使用教程
  • 高可扩展属性建模设计:架构师的全局思考与落地方案
  • 云原生AI研发体系建设路径
  • PaddleOCR独立服务:高效OCR一站式解决方案