我正在从Origin服务器设置Cache-Control:s-maxage = 3600。由此,我指示我的AWS CloudFront将内容缓存3600秒。我在白名单中列出了一些cookie,并根据CloudFront中的cookie值设置了缓存。直到客户端和我的CloudFront之间没有代理为止,此设置才能正常工作。
如果存在代理,它还会由于s-maxage标头而缓存版本,而不考虑cookie值。因此,我的最终用户看到了我的网页的不相关版本。
有什么办法可以克服这个问题?还是我需要编写Lambda @ edge函数以在“查看器响应”中删除此Cache-Control:s-maxage = 3600?
答案 0 :(得分:0)
在“查看器响应”处创建Lamda @ Edge函数,并重置Cache-Control标头。
exports.handler = (event, context, callback) => {
/* Get response */
const response = event.Records[0].cf.response;
response.headers['cache-control'] = [{
key: 'cache-control', value: 'no-cache, no-store, must-revalidate'
}];
callback(null, response);
};