Imageresizer的Diskcache插件忽略使用AzureReader2检索的图像的修改日期

Imageresizer的Diskcache插件忽略使用AzureReader2检索的图像的修改日期,azure,azure-storage-blobs,imageresizer,imageresizer-diskcache,Azure,Azure Storage Blobs,Imageresizer,Imageresizer Diskcache,当我将具有相同名称但具有上次修改的新属性的图像的新版本上载到Azure存储时,通过URL API调用的已调整大小的版本不会更新 直接从此URL查看时,将显示新图像: [修订].blob.core.windows.net/xlenz/modified-test.jpg 但当我查看调整大小的缓存版本时,仍然会看到旧版本: [redacted].com/cloud/xlenz/modified test.jpg?width=700 请求图像的新未缓存版本时,会显示新版本: [redacted].com

当我将具有相同名称但具有上次修改的新属性的图像的新版本上载到Azure存储时,通过URL API调用的已调整大小的版本不会更新

直接从此URL查看时,将显示新图像: [修订].blob.core.windows.net/xlenz/modified-test.jpg

但当我查看调整大小的缓存版本时,仍然会看到旧版本: [redacted].com/cloud/xlenz/modified test.jpg?width=700

请求图像的新未缓存版本时,会显示新版本: [redacted].com/cloud/xlenz/modified test.jpg?width=800

当我将图像的新版本直接FTP到站点时,通过URL API调用的已调整大小的版本会更新: [redacted].com/modified test.jpg?宽度=700

我知道问题出在DiskCache上,而不是AzureReader2,因为当我通过禁用DiskCache时,问题就消失了

这是DiskCache插件中的错误吗?DiskCache是否不查看Azure Blob存储中文件的上次修改日期

我使用的是ImageResizer、ImageResizer.Plugins.AzureReader2和ImageResizer.Plugins.DiskCache的最新3.4.2版本


诊断页面输出:

禁用缓存时,每个请求都会从Azure下载源映像的新副本

要提供上次修改的基于日期的失效,您必须在每个请求上与Azure进行检查,或者根据更多的过期规则缓存元数据

不允许DiskCache访问azure Blob的修改日期,因为这会使缓存的映像访问速度非常慢。网络延迟不容忽视:

在处理blob或远程存储时,最好的失效策略是完全不失效—将blob视为不可变的。这并不意味着您不能更新现有图像URL的响应-它只是意味着您必须在某个地方维护一个重写表

查看Amazon S3存储的等效插件,我得出结论,它不是一个bug,而是一个缺失的特性

S3Reader2具有“checkForModifiedFiles”配置设置:

如果为true,则S3Reader将在 已请求缓存文件。元数据被缓存一个小时 可通过代码配置最后一次访问。如果为false,则S3将永远不会为false 检查缓存文件的更新版本,通过 50%. 默认为false

这正是我在AzureReader2中寻找的

我在官方ImageResizer UserVoice网站上添加了此功能请求:

请添加您的投票

作为一种临时解决方法,在等待修复时,我们会将当前日期添加到ImageResizer请求中,该请求会转到每天部分更新的图像

更新日期2015-02-26:@Nathanel jones写道: 此功能已完成,并出现在GitHub上的V4和develop分支中


谢谢你的投票

查看S3Reader2,它是Amazon S3存储的等效插件,我看到它有一个“checkForModifiedFiles”配置设置:如果为true,S3Reader将在请求缓存文件时检查S3上更新的源文件。元数据在最后一次被代码访问后被缓存一小时。如果为false,将永远不会检查S3是否有更新版本的缓存文件,从而将延迟成本降低50%。默认为false。因此,你是对的,检查新版本可能会增加延迟成本,但我可能正确地期望AzureReader2插件具有类似的功能。
Last-Modified: Thu, 08 May 2014 09:22:46 GMT
ETag: "ddf1d8129f6acf1:0"
Content-Type: image/jpeg
Cache-Control: public
Last-Modified: Thu, 08 May 2014 10:12:20 GMT
ETag: "a28693ffa56acf1:0"
Content-Type: image/jpeg
Cache-Control: public