要从AWS CloudFront删除缓存控制标头吗?

时间:2018-12-20 13:46:29

标签: amazon-web-services aws-lambda amazon-cloudfront

我正在从Origin服务器设置Cache-Control:s-maxage = 3600。由此,我指示我的AWS CloudFront将内容缓存3600秒。我在白名单中列出了一些cookie,并根据CloudFront中的cookie值设置了缓存。直到客户端和我的CloudFront之间没有代理为止,此设置才能正常工作。

如果存在代理,它还会由于s-maxage标头而缓存版本,而不考虑cookie值。因此,我的最终用户看到了我的网页的不相关版本。

有什么办法可以克服这个问题?还是我需要编写Lambda @ edge函数以在“查看器响应”中删除此Cache-Control:s-maxage = 3600?

1 个答案:

答案 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);
};