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



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

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

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

我认为IVirtualFileWithModifiedDate可以解决这个问题,但它不需要在每次请求时查询数据库,而不是在删除时处理它吗?

有点像:

DAL.DeleteImage(ImageID);
DiskCachePlugin.Invalidate(ImageID);

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

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

最新更新