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

超链接缓存返回旧内容 加随机参数与no-cache头仍未解决

可行解决方案

  • 首先验证前端随机参数是否实际生效,通过浏览器F12网络面板确认每次请求的video.php的v参数值均不重复,排查是否存在前端代码拼接错误、参数被服务器重写丢弃的问题。
  • 确认禁用缓存的响应头没有被上层服务覆盖,查看请求实际返回的响应头是否包含你设置的Cache-Control等字段,如果是被Nginx、CDN等中间件覆盖,需要在对应服务的规则中修改视频接口的缓存策略。
  • 在现有响应头基础上补充配置:
    // 强制过期时间设为过去的时间
    header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
    // 每次生成唯一的ETag,避免浏览器协商缓存返回304
    header('ETag: "'.md5(uniqid()).'"');
    // 移除Last-Modified响应头
    header_remove('Last-Modified');
    
  • 更换请求方式规避GET缓存,浏览器默认不会缓存POST请求的响应:
    如果是video元素加载资源,可以用fetch发起POST请求后转blob地址赋值:
    fetch('https://example/video.php', {method: 'POST'})
      .then(res => res.blob())
      .then(blob => {
        const videoEl = document.querySelector('video');
        // 释放之前的blob资源避免缓存
        if(videoEl.src) URL.revokeObjectURL(videoEl.src);
        videoEl.src = URL.createObjectURL(blob);
      })
    
  • 如果是直接跳转超链接看视频,改为表单POST提交跳转:
    <form id="videoForm" action="https://example/video.php" method="POST" target="_blank">
      <button type="submit">查看实时流</button>
    </form>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:54:04