Cache-Control:public,max-age = LONG_TIME响应在HTTP 301重定向后不起作用

时间:2013-08-21 11:20:41

标签: http firefox web-applications browser-cache cache-control

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

我正在尝试使用Cache-Control: public,max-age=MANY_SECONDS加快连续缩略图加载,其中MANY_SECONDS最长可达一年。

通过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密钥设置public,max-age=MANY_SECONDS标头为*-thumb.png,仍然Firefox针对/api/thumbnail/...发出请求并获取301,然后从Amazon S3获取304

我认为301响应似乎是永久缓存的,而且从Amazon S3提供的缩略图文件的Cache-Control标题应允许Firefox在本地缓存缩略图文件长达一年。

所有这些 thumb×2 请求实际上都是开销。我希望他们能够永久缓存。

1 个答案:

答案 0 :(得分:0)

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