11

レスポンスにヘッダーを含む CloudFront のオリジンがある場合set-cookie: CloudFront はレスポンスの をキャッシュしset-cookie headerますか? そうでない場合、そうする CDN はありますか?

4

3 に答える 3

3

答えはイエスです。なし/ホワイトリスト/すべてを許可するようにディストリビューションを構成するときにドロップダウンがあります

于 2012-10-28T16:21:40.337 に答える
1

@ anthony-disanti による優れた回答を拡張すると、次の手順を実行することで、キャッシュされる (パブリック) コンテンツを CloudFront にロードできます。

  • 特定の Cookie をホワイトリストに登録します。これにより、Cookie が最初のビューアーに返され、最初の更新で再度送信されるようになります。
  • 次のようなキャッシュ制御を使用して Set-Cookie ヘッダーがキャッシュ キーに含まれないようにすることで、キャッシュを許可します。public, no-cache="Set-Cookie", max-age=86400

いくつかのパブリック Web ページを持つ asp.net コア アプリケーションの場合、CloudFront からサービスを提供すると、パブリック Web ページの応答時間が 120 ミリ秒から 20 ミリ秒に短縮されました。また、ディスク キャッシュから 1 ミリ秒まで提供された場合。この場合の Cookie 名は「.AspNetCore.Session」でした。

Cookie を転送しない場合、各オリジン レスポンスには set-cookie ヘッダーが含まれているため、CloudFront はキャッシュしません。

オリジンの動作を変更する手段がない場合は、次のようなオリジン レスポンスで Lambda@edge トリガーを使用することを検討してください。

'use strict';

exports.handler = (event, context, callback) => {
    const response = event.Records[0].cf.response;

    if(response.headers['cache-control'])
    {
        response.headers['cache-control'] = [{ 
            key:   'Cache-Control', 
            value: 'public, max-age=604800, no-cache="Set-Cookie"'
        }];
    }

    callback(null, response);
};
于 2020-09-14T15:02:54.527 に答える