![CloudFront 通常会错过来自浏览器的消息,而命中来自 cURL 的消息](https://linux22.com/image/736202/CloudFront%20%E9%80%9A%E5%B8%B8%E4%BC%9A%E9%94%99%E8%BF%87%E6%9D%A5%E8%87%AA%E6%B5%8F%E8%A7%88%E5%99%A8%E7%9A%84%E6%B6%88%E6%81%AF%EF%BC%8C%E8%80%8C%E5%91%BD%E4%B8%AD%E6%9D%A5%E8%87%AA%20cURL%20%E7%9A%84%E6%B6%88%E6%81%AF.png)
当我在浏览器中加载 HTML 页面时,所有对资源的请求都有x-cache: Miss from cloudfront
。如果我重新加载浏览器非常很快,有时我可以得到一个Hit
。
如果我打开我的开发人员工具并“将请求复制为 curl”,那么无论我执行请求的速度有多快或多慢,我都能可靠地获得成功。
为什么不同的用户代理发出完全相同的请求会成功或失败?
答案1
您可能正在 Cloudfront 上转发 cookie。
因此,每次您在浏览器中刷新页面时,浏览器都会创建一个新的 cookie 哈希,并且 CDN 会认为这是一个新请求。
您必须关闭 Cloudfront 的 cookie 转发。
要在 CURL 中复制此行为,请尝试使用不同的 cookie 发送请求,您会发现它变慢了。