【问题标题】:AWS Lambda Edge - Detect that response comes from origin or not in viewer response functionAWS Lambda Edge - 在查看器响应函数中检测响应是否来自源
【发布时间】:2021-02-25 11:41:14
【问题描述】:

在我的 lambda 边缘查看器响应函数中,我需要了解响应来自 Cloudfront 缓存还是源服务器 -

我正在考虑从原始响应函数传递响应标头,但是它的值保留在缓存中,因此后续请求也会返回它。

你认为有可能实现这样的检测吗?

【问题讨论】:

  • 这听起来像是一个 XY 问题。你能告诉我们你为什么需要这个吗?
  • 只是为了比较页面的性能与 CDN 缓存命中与 CDN 缓存未命中。
  • 我找到了解决这个问题的方法,在下面回答

标签: amazon-web-services aws-lambda http-headers httpresponse aws-lambda-edge


【解决方案1】:

我可以通过检查 date 标头值和查看器响应中的执行日期来使其正常工作 -

  const originWasAccessedAt = getHeader('date', response);
  const viewerResponseAccessedAt = new Date().toUTCString();
  const originTime = Date.parse(originWasAccessedAt);
  const viewerTime = Date.parse(viewerResponseAccessedAt);
  const allowedTimeRange = 1000 * 2; // use 2 seconds range for safety
  const maxOriginTime = originTime + allowedTimeRange;
  const originWasHit = viewerTime >= originTime && viewerTime <= maxOriginTime;
  const value = originWasHit ? 'CDN_CACHE_MISS' : 'CDN_CACHE_HIT';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多