AWS CloudFront和全球加速器都可以使用缓存和Lambda@edge进行优化。以下是一个基本的示例:
缓存:
定义一个缓存行为以在CloudFront分配的边缘位置上缓存内容,例如静态资源(如图像、CSS和JavaScript文件):
{ "DistributionConfig": { "DefaultCacheBehavior": { "TargetOriginId": "myS3origin", "ForwardedValues": { "QueryString": true }, "ViewerProtocolPolicy": "redirect-to-https", "MinTTL": 0, "DefaultTTL": 86400, "MaxTTL": 31536000, "AllowedMethods": { "Quantity": 7, "Items": [ "HEAD", "DELETE", "POST", "GET", "OPTIONS", "PUT", "PATCH" ], "CachedMethods": { "Quantity": 2, "Items": [ "HEAD", "GET" ] } }, "SmoothStreaming": false, "Compress": true } } }
Lambda@edge:
使Lambda函数在CloudFront边缘位置上针对特定事件执行以下操作:更改请求的标题、更改响应的正文或操作中的任何其他内容:
exports.handler = (event, context, callback) => { // Retrieve the request object from the event argument. const request = event.Records[0].cf.request;
// Update request headers.
request.headers['X-My-Header'] = [{ key: 'X-My-Header', value: 'MyHeader' }];
// Return control back to CloudFront with the decorated request object.
return callback(null, request);
};