我们正在尝试使用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");
}
}
答案 0 :(得分:1)
DiskCache 通过访问控制保护缓存图像,使用UrlAuthorization(如果您安装了IIS模块,则应如此)。
也就是说,您可以在任何请求上设置&cache=no
以防止磁盘缓存。您可以使用Config.Current.Pipeline.Rewrite
事件处理程序,根据您需要的任何条件在服务器端自动执行此操作。