レスポンスにヘッダーを含む CloudFront のオリジンがある場合set-cookie
: CloudFront はレスポンスの をキャッシュしset-cookie header
ますか? そうでない場合、そうする CDN はありますか?
質問する
9257 次
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 に答える