【发布时间】:2021-03-21 05:45:28
【问题描述】:
我将 CloudFront 缓存行为配置为缓存路径模式 /posts 下的所有页面。缓存行为是从 WordPress 网站的自定义来源获取内容。我需要根据请求 url 的特定查询参数的存在来实现自定义缓存逻辑。具体来说,如果请求 url 包含查询参数?preview=true,那么我想将该 Viewer Request 转发到 Origin 以获取动态生成的页面,无论该请求是否已被缓存。
我应该在我的 nodejs lambda 边缘函数中编写什么代码来处理查看器请求事件的以下场景:
- 请求 url 包含
?preview=true参数,因此即使请求已缓存在 CloudFront 中,也始终强制执行源请求 - 请求url不包含
?preview=true参数且响应已缓存在CloudFront中,所以只需从缓存中返回响应 - 请求 url 不包含
?preview=true参数,响应尚未缓存在 CloudFront 中,因此将请求转发到源
我有提供的逻辑结构,但我不知道 CloudFront 特定的代码:
const querystring = require('querystring');
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const params = querystring.parse(request.querystring);
if (params['preview'] && params['preview'] === 'true') {
// Force request to the origin
} else {
// Check if request is cached in CloudFront and
// - Return response if request is cached
// - Forwrd to origin if request is not cached
}
callback(null, request);
};
【问题讨论】:
标签: lambda aws-lambda amazon-cloudfront aws-lambda-edge