4

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

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

在版权、色情等的情况下,有没有办法让DiskCache知道文件已被删除并立即强制将文件从缓存中删除?

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

有一点像:

DAL.DeleteImage(ImageID);

DiskCachePlugin.Invalidate(ImageID);
4

1 回答 1

1

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

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

于 2015-07-03T12:56:24.513 回答