【发布时间】:2016-10-05 08:34:19
【问题描述】:
我们正在使用 ImageResizer 来处理来自某些客户网站的图像并调整其大小,这些图像会在它们到达最终用户的途中。在大多数情况下,这非常有效,我们很高兴。最近我们一直在努力解决的问题是,一些远程资源非常非常慢。这不是产品的问题,但我们希望得到一些关于如何更有效地使用它来处理这种情况的建议。
RemoteReader 插件有 15 秒的(硬编码)超时来读取远程图像。大多数时候,这已经足够了。如果成功获取图片,它会缓存在我们的 Web 服务器和 CDN 上,重复请求应该很快。但是如果请求超时,抛出的异常会返回 500,并且我们的 Web 服务器上没有任何内容(AFAIK)可以记住这一点。 CDN 应该将错误响应缓存一段时间,但通常重复请求会不断增加这些下载图像的尝试,这将继续超时。
更糟糕的是,最大的罪魁祸首是请求最终会成功,但我们看到下载(在任何绝对意义上)不是很大的图像需要几分钟的时间。显然,我们不想让用户等待那么久,但是如果我们可以将该图像放入本地缓存中,那么下游请求就会很好地工作。
我不确定在不分叉插件的情况下我们可以对任何这种行为施加多少控制。但是,如果我们缺少最佳实践,我很乐意解决这个问题。
有什么方法可以限制加载失败的远程图像的尝试?
有没有办法允许从远程源进行异步传输?
如果我们要尝试构建这样的东西,是否有任何 API 可以将内容注入 DiskCache?
【问题讨论】:
标签: imageresizer