【问题标题】:The Diskcache plugin of Imageresizer ignores the modified date of images retrieved with AzureReader2Imageresizer 的 Diskcache 插件会忽略使用 AzureReader2 检索到的图像的修改日期
【发布时间】:2014-06-25 17:01:55
【问题描述】:

当我将图像的新版本(具有相同名称,但具有新的 Last Modified 属性)上传到 Azure 存储时,通过 URL API 调用的调整大小的版本不会更新。

直接从该 URL 查看时会显示新图像: [已编辑].blob.core.windows.net/xlenz/modified-test.jpg

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

Last-Modified: Thu, 08 May 2014 09:22:46 GMT
ETag: "ddf1d8129f6acf1:0"
Content-Type: image/jpeg
Cache-Control: public

请求图像的新未缓存版本确实会显示新版本: [已编辑].com/cloud/xlenz/modified-test.jpg?width=800

Last-Modified: Thu, 08 May 2014 10:12:20 GMT
ETag: "a28693ffa56acf1:0"
Content-Type: image/jpeg
Cache-Control: public

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

我知道问题出在 DiskCache 而不是 AzureReader2,因为当我通过 <diskCache enabled="false" /> 禁用 DiskCache 时,问题就消失了。

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

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

诊断页面输出:https://gist.github.com/anonymous/e104f8127969cedf92fd

【问题讨论】:

    标签: azure azure-blob-storage imageresizer imageresizer-diskcache


    【解决方案1】:

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

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

    AzureReader2 不允许 DiskCache 访问 azure blob 的修改日期,因为这甚至会使缓存的图像访问变得非常缓慢。网络延迟不容小觑:)

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

    【讨论】:

    • 查看 S3Reader2(Amazon S3 存储的等效插件)我看到它有一个“checkForModifiedFiles”配置设置:“如果为真,当缓存文件为请求。元数据在上次访问后缓存一小时(可通过代码配置)。如果为 false,则永远不会检查 S3 是否有较新版本的缓存文件,从而将延迟成本降低 50%。默认为 false。所以你是对的,检查更新的版本可能会增加延迟成本,但我期待 AzureReader2 插件中的类似功能可能是正确的。
    【解决方案2】:

    查看S3Reader2(Amazon S3 存储的等效插件)我得出的结论是,它不是错误,而是缺少的功能。

    S3Reader2 有一个“checkForModifiedFiles”配置设置:

    如果为真,S3Reader 将在 S3 上检查更新的源文件 请求缓存文件。元数据在它之后被缓存一个小时 最后一次访问(可通过代码配置)。如果为 false,S3 将永远不会 检查缓存文件的较新版本,从而降低延迟成本 50%。默认为 false。

    这正是我在 AzureReader2 中寻找的内容!

    我已将其添加为 ImageResizer UserVoice 官方网站上的功能请求http://resizer.uservoice.com/forums/108373-image-resizer/suggestions/5900800-add-checkformodifiedfiles-configuration-setting-l

    请添加您的投票!

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

    2015-02-26 更新:@nathanael-jones 在http://resizer.uservoice.com/forums/108373-image-resizer/suggestions/5900800-add-checkformodifiedfiles-configuration-setting-l 上写道: “这个功能是完整的,并且存在于 GitHub 上的 V4 和开发分支中。”

    感谢您的投票!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 2014-07-08
      相关资源
      最近更新 更多