ImageResizer:删除缓存的图像(磁盘缓存和SqlReader)

4
使用ImageResizer动态调整用户上传的文件大小。
当数据库中的文件被删除(行被删除)时,原始文件和调整后的文件版本仍然可以访问一段时间,直到清理计划完成。
在版权、色情等情况下,有没有一种方法可以让DiskCache知道文件已被删除,并立即强制从缓存中删除文件?
我认为可以通过IVirtualFileWithModifiedDate来解决,但这是否需要在每个请求中查询数据库,而不仅仅是在删除时处理呢?
有点像:
DAL.DeleteImage(ImageID);

DiskCachePlugin.Invalidate(ImageID);

嗨,你找到解决方案了吗? - genichm
1个回答

1
当数据库中的文件被删除时(行删除),原始版本和调整大小的版本仍可访问一段时间,直到清理计划完成。ImageResizer不允许在知道原始文件不可访问后访问缓存版本。话虽如此,一些提供者(如Sql和S3)会为滑动窗口(最小为1小时)缓存存在元数据,这可能导致您看到的行为。在V4中,您可以禁用此元数据缓存以确保立即撤销访问。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接