0

我正在发布包含以图片形式嵌入在提要项中的图表的 Web 提要,并使用 MVC 操作返回到客户端轮询网络提要,/RSS_Img/filename.

一些图表与提要项目一起更新,我想让客户端在服务器端修改图像后重新加载图像(我可以控制图表何时更新,因为这是由另一个控制器的操作执行的)。

同时,我不想避免在客户端进行缓存,因为这会以显着增加的带宽打击我。

我最好的选择是什么?我考虑了以下几点:

  • 显然更改图像名称 - 但这是不可接受的,因为它会破坏可能作为邮件转发的提要项目 - 或者在我保留旧版本的情况下大大增加存储大小
  • 映射可能会更新的联合项目是什么,并在检索图像的操作中,Response.Cache.SetCacheability(HttpCacheability.Server);仅为这些项目设置[实际上我认为我应该将可缓存性设置为无,因为我猜缓存RSS_Img操作的结果几乎没有优势:它基本上只是加载并返回文件本身。]
    这将要求我从 SQL 服务器检索要刷新(或冻结)的图像的 ID(我正在处理大量图表图像),这将给 WebApp 增加相当大的负担。
    此外,我不能总是确定哪些项目可能会被更新,所以这种方法不能满足 100% 的要求。

我正在寻找的解决方案是在更改图像文件时找到一种使缓存无效的简单方法-我可以轻松使用类似的东西HttpResponse.RemoveOutputCacheItem("/RSS_Img/" + fileName.Value):但这似乎只影响服务器缓存。

我没有其他选择,还有其他实用的方法吗?

4

1 回答 1

0

传统的解决方案是使用虚拟参数来引用图像,例如<img src="chart.gif?cache=448267163"/>. 每当您更新图表时,使用新值更新指向它的链接。通常最后一次更新的日期被用作参数值。

于 2012-05-14T19:10:49.707 回答