0

我们的网络服务器会定期从其他网络服务器下载图像。为了防止我们的服务器每天都必须下载相同的图像,即使它没有更改,我计划在图像下载时存储 Last-Modified 标头,然后将该日期放入后续请求的 If-Modified-Since 标头中同一个文件。

我可以正常工作,除非在请求时即时生成远程文件(例如,如果它在从单独的原始文件请求时为 Web 生成特定大小的版本)。在这种情况下,Last-Modified 标头是远程服务器响应请求的日期,因此先前下载的存储的 Last-Modified 标头始终比后续请求的标头更早,因此图像将始终被下载,我永远不会得到 304 Not Modified 状态码。

那么,当远程服务器提供动态生成的图像时,有没有办法降低下载频率?

在我看来这是不可能的,但我想我还是会问。

4

1 回答 1

1

如果您可以为图像创建某种形式的散列,请使用ETags. 您的服务器必须If-None-Match根据哈希检查请求标头,如果它们匹配,您可以返回 304 响应。

客户端仍然会发送Last-Modified,但如果您的哈希方法不会产生很多冲突,您应该能够忽略它并匹配ETags.

于 2013-09-19T23:39:37.097 回答