1

私のサーバーは、ページの読み込みごとに 100 を超えるサムネイル画像をプリロードするアプリケーションをホストしています。サムネイル画像は頻繁に変更されません。

Cache-Control: public,max-age=MANY_SECONDSwhere MANY_SECONDSis up to 1 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-ControlAmazon S3 から提供されるサムネイル ファイルのヘッダーにより、Firefox は最大 1 年間サムネイル ファイルをローカルにキャッシュできるようになるはずです。

これらすべての親指 × 2要求は、実際にはオーバーヘッドです。それらを永遠にキャッシュしてほしい。

4

1 に答える 1

0

私の解決策は、HTML5 マニフェストファイルを使用することでした。

于 2013-08-26T12:26:43.523 に答える