有没有办法使用DiskCache插件缓存ImageResizer的特定路径?

时间:2014-03-18 12:34:41

标签: asp.net-mvc caching imageresizer

我们正在尝试使用ImageResizer来管理我们已经存储过的大量存储图像,其中一些像我们想要缓存的产品图像或标题徽标,并且使用DiskCache插件可以很好地工作并且非常棒。

但是,我们还有其他图像,比如儿童的id照片和出生证明的扫描图片,我们希望使用ImageResizer进行处理,但不希望被缓存,以防万一。

我已经不得不写一些IPlugin来访问我们相当......复杂的现有文件结构,我可以在那里标记结果不能缓存吗?或者在DiskCache配置行上是否有一些我还没有注意到白名单(或黑名单)路径的能力?

提前致谢

编辑:管道重写事件代码如下所示:

private void PipelineOnRewrite( IHttpModule sender, HttpContext context, IUrlEventArgs urlEventArgs )
{
  if( urlEventArgs.VirtualPath.Contains( VirtualFilesystemPrefix ) )
  {
    urlEventArgs.QueryString.Add("cache", "no");
  }
}

1 个答案:

答案 0 :(得分:1)

DiskCache 通过访问控制保护缓存图像,使用UrlAuthorization(如果您安装了IIS模块,则应如此)。

也就是说,您可以在任何请求上设置&cache=no以防止磁盘缓存。您可以使用Config.Current.Pipeline.Rewrite事件处理程序,根据您需要的任何条件在服务器端自动执行此操作。