我的服务器正在托管一个应用程序,该应用程序在每个页面加载时预加载> 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 请求实际上都是开销。我希望他们能够永久缓存。