![]() |
1
0
太长,读不下去了 你说得对。AWS可以“在内部缓存这些内容并保存调用”,特别是在您返回相同子路径的原始请求的情况下。 完整答案 您发现Lambda调用和CDN请求之间的区别可能在于AWS CloudFront的工作方式Lambda@Edge功能。 即使您在查看器请求阶段使用Lambda函数并关闭缓存,也不能保证该函数会对每个请求运行。AWS在这方面很聪明,并倾向于根据其估计的响应来优化调用,尤其是Lambda@Edge. 在您的情况下,Lambda函数只是转发某些子路径的原始请求,AWS可以在幕后缓存该行为。CloudFront旨在减少Lambda调用,如果它发现类似请求的函数输出不会发生太大变化。 这种优化对于那些根本不调整请求或只根据特定URL路径等简单标准调整请求的函数尤其有效。CloudFront会记住早期调用的结果,并应用相同的逻辑,而无需每次调用Lambda函数。 你没有看到任何被限制的请求,这一事实支持了这一点。如果CloudFront在繁忙时段(如黑色星期五)为每个请求调用Lambda,你几乎肯定会注意到一些限制。 值得一提的是,虽然这种优化可以保持速度并降低成本,但它不会干扰您的实际CDN内容缓存。如果你已经禁用了内容的缓存,它仍然会这样工作。 这种行为已经融入AWS,你无法真正调整,但这通常是一件好事,因为它降低了延迟和成本,同时保持了一切按预期运行。 如果你绝对需要Lambda为每个请求触发,没有例外,你必须在每个请求中包含一些唯一的东西,比如时间戳或ID。请注意,这可能会增加您的Lambda成本,并在流量很大时可能会减慢速度。 |
![]() |
Brad Parks · 如何确保我的CDN按来源缓存CORS请求? 7 年前 |
![]() |
Kevin · CDN或下载到目录? 7 年前 |
![]() |
Greg · CDN是如何工作的? 7 年前 |
![]() |
Aleks · 如何在React项目中使用CDN导入 7 年前 |
![]() |
Ilja · firebase托管是否受益于CloudFlare? 7 年前 |