1

我的服务器正在托管一个应用程序,该应用程序在每个页面加载时预加载 >100 个缩略图。缩略图图像不会经常更改。

我试图通过使用Cache-Control: public,max-age=MANY_SECONDSwhere MANY_SECONDSis up to a year 来更快地加载连续的缩略图。

缩略图是通过 Flask 端点请求的,如下所示:

@app.route('/api/thumbnail/<string:filename>/<int:max_width>/<int:max_height>/')
def api_thumbnail(filename, max_width, max_height):
    thumb_filename_template = '{filename}_{orig_digest}-{dimensions}-thumb.png'

    # [...] PIL thumbnailing logic [...]

    key = Key(thumb_filename_template.format(
            filename=filename,
            orig_digest=md5_hexdigest_of_original_image,
            dimensions='x'.join([max_width, max_height])
        ))

    # Upload the thumbnail image to Amazon S3
    key.set_contents_from_string(local_thumbnail_file.read())

    redirect(key.generate_url(0, query_auth=False), code=301)

我将所有键的Cache-Control标头设置为,但 Firefox 仍然会触发请求并获取 301,然后是来自 Amazon S3 的 304。public,max-age=MANY_SECONDS*-thumb.png/api/thumbnail/...

我的印象是 301 响应似乎被永久缓存了,并且Cache-Control从 Amazon S3 提供的缩略图文件的标头应该允许 Firefox 在本地缓存缩略图文件长达一年。

所有这些拇指 × 2请求确实是开销。我希望它们被永久缓存。

4

1 回答 1

0

我的解决方案是使用HTML5 清单文件。

于 2013-08-26T12:26:43.523 回答