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

时间:2015-03-19 16:50:28

标签: imageresizer imageresizer-diskcache

使用ImageResizer动态调整用户上传的文件大小。

当在数据库中删除文件(删除行)时,原始版本和调整大小的版本仍可访问一段时间,直到清理计划完成。

如果是版权,色情等,有没有办法让DiskCache知道该文件已被删除,并立即强制将文件从缓存中删除?

我认为它可以通过IVirtualFileWithModifiedDate来解决,但是它不需要在每个请求上查询db而不是仅仅在删除时处理它吗?

有点像:

DAL.DeleteImage(ImageID);

DiskCachePlugin.Invalidate(ImageID);

1 个答案:

答案 0 :(得分:1)

  

当在数据库中删除文件(删除行)时,原始版本和调整大小的版本仍可访问一段时间,直到清理计划完成。

ImageResizer一旦知道原始版本不可访问,就不允许访问缓存版本。也就是说,一些提供程序(如Sql和S3)缓存滑动窗口的存在元数据(最少1小时),这可能会导致您看到的行为。在V4中,您可以禁用此元数据缓存以确保立即撤消访问。​​