CloudFront 缓存,"request.uri"可以成为缓存键的一部分吗?



我已经阅读了cloudfront:上的缓存密钥文档

https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-cloudfront-announces-cache-and-origin-request-policies/

我有一个lambda@edge由Viewer Request触发的函数。在那里,我将request.uri设置为从S3获取正确文件所需的值。

从文档中,我没有看到任何关于request.uri是缓存密钥所考虑的内容的内容。

有没有办法让request.uri影响缓存密钥?

InLambda@Edge,request.uri(其中request对象为event.Records[0].cf.request(是请求URL的资源(路径(组件,包括文件名和扩展名。

这是始终缓存密钥的一部分。这是默认行为,不能禁用。

默认情况下,[缓存密钥]由CloudFront分发主机名和请求URL的资源部分(路径、文件名和扩展名(组成

https://aws.amazon.com/blogs/networking-and-content-delivery/amazon-cloudfront-announces-cache-and-origin-request-policies/

。。。然而,这并不是完全的答案。

request.uri的值可以通过查看器请求和/或原始请求触发器进行修改。。。因此,这里的一个重要考虑因素是为确定缓存密钥而评估该值时?

如果触发器是查看器请求触发器,则缓存键使用触发器运行后的request.uri值。这意味着,如果查看器请求触发器修改了request.uri的值(并将修改后的request对象返回给CloudFront(,则缓存密钥将被修改为包含修改后的值。在查看器请求触发器完成并将控制权返回给CloudFront之后,会立即进行缓存查找。

原始请求触发器中的情况非常不同。在原始请求触发器中修改request.uri不会更改缓存键(此时缓存键已完全冻结,因为缓存已被检查,并且可缓存响应将存储在生成缓存未命中的同一缓存键下(。原始请求触发器运行前的值是缓存键中的值。

在任一触发类型中更改request.uri也将更改源服务器接收的请求URI。

最新更新