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

Azure门户Web Chat测试模拟器HeroCard缓存异常问题求助

解决Web Chat模拟器中HeroCard图片缓存问题

你遇到的核心问题是浏览器/Web Chat模拟器对静态图片资源的缓存机制在作怪——虽然本地的temp.png已经更新,但因为每次请求的URL完全一致,浏览器会直接读取缓存里的旧图片,不会去服务器拉取新文件。

快速解决方案:给图片URL追加唯一标识参数

最简单的思路就是让每次生成的图片URL都不一样,迫使浏览器重新请求资源。你可以在URL后面添加时间戳或随机唯一值作为参数:

修改AdaptiveCardToHeroAttachment方法里的图片URL部分:

// 原代码
hero.Images.Add(new CardImage("http://localhost:3979/cache/temp.png"));

// 修改后:追加时间戳参数
var timestamp = DateTime.Now.Ticks.ToString();
hero.Images.Add(new CardImage($"http://localhost:3979/cache/temp.png?t={timestamp}"));

也可以用GUID生成唯一值,效果相同:

var uniqueId = Guid.NewGuid().ToString();
hero.Images.Add(new CardImage($"http://localhost:3979/cache/temp.png?id={uniqueId}"));

为什么这个方法有效?

浏览器缓存静态资源的核心依据是请求URL,只要URL不变,它就会默认复用缓存内容。通过追加唯一参数,每次请求的URL都是全新的,浏览器会判定这是新资源,从而加载你刚更新的temp.png。

额外验证点(可选)

虽然你提到本地图片已更新,还是可以快速确认两个细节:

  • 确保RenderCardToImageAsync确实生成了新的图片流,没有复用旧数据
  • 确认FileStream的FileMode.Create正确覆盖了旧文件(你当前代码的写法是正确的,FileMode.Create会直接替换已有文件)

这样修改后,再测试问题A和问题B,应该就能看到对应问题的正确图片了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:28