ImageResizer - 需要删除图像缓存中的图像

时间:2018-02-12 17:58:12

标签: c# image-resizing imageresizer

我将ImageResizer工具与DiskCache插件一起使用。我们使用Azure blob存储来存储图像,并使用自定义插件在resizer代码中提供这些图像。有些东西出了问题,有些blob已被删除,但是缓存在调整器的DiskCache中。

我需要能够构建哈希键以便能够识别缓存中的图像。我尝试从代码中看到的构建密钥,但返回的字符串不会在缓存中生成文件

var vp = ResolveAppRelativeAssumeAppRelative(virtualPath);
var qs = PathUtils.BuildQueryString(queryString).Replace("&red_dot=true", "");

var blob = new Blob(this, virtualPath, queryString);
var modified = blob.ModifiedDateUTC;

var cachekey = string.Format("{0}{1}|{2}", vp, qs, blob.GetModifiedDateUTCAsync().Result.Ticks.ToString(NumberFormatInfo.InvariantInfo));

var relativePath = new UrlHasher().hash(cachekey, 4096, "/");

如何查询缓存以查看图像是否仍然被缓存,然后在blob存储帐户中不存在时将其删除?

注意:我曾尝试使用AzureReader2插件,但目前它并不适用于我们。

1 个答案:

答案 0 :(得分:1)

自定义插件负责控制对缓存文件的访问。

如果要查看缓存活动请求的位置,请在请求的EndRequest阶段检查HttpContext.Current.Items["FinalCachedFile"]。您可以使用事件处理程序执行此操作。