You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Lambda Edge实现CloudFront返回旧版本页面,减少OpenAI源站请求?

实现CloudFront缓存策略减少OpenAI源站请求

方案一:CloudFront原生缓存配置(无需Lambda Edge)

这是最直接的实现方式,靠CloudFront自带的缓存规则就能满足需求:

  • 创建缓存策略:把默认TTL、最小TTL、最大TTL都设为3600秒,确保缓存时间固定。
  • 绑定源站行为:将这个缓存策略绑定到指向api.openai.com的分发行为上。
  • 缓存键设置:如果是GET请求,默认按路径、参数生成缓存键;如果是POST请求,需要在缓存键配置里加入请求体的哈希值(确保相同请求内容命中同一缓存)。

配置完成后,首次请求会拉取源站内容并缓存,接下来3600秒内的相同请求直接返回缓存的旧版本,超时后自动回源更新缓存。

方案二:Lambda Edge辅助(自定义缓存逻辑)

如果需要更灵活的控制(比如特定请求跳过缓存),可以用Lambda Edge的两个触发器配合:

1. Origin Request触发器(拦截请求,判断是否回源)

这个触发器在CloudFront决定是否回源前触发,核心逻辑:

  • 检查当前请求对应的缓存是否存在且未过期(通过请求头里的Age值和预设的TTL对比)。
  • 缓存有效则直接返回缓存内容;缓存过期或不存在则允许请求回源。

示例Node.js代码:

exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const cacheTTL = event.Records[0].cf.config.cacheBehavior.defaultTTL;
    
    // 读取缓存已存活时间
    const cacheAge = request.headers['age'] ? parseInt(request.headers['age'][0].value) : 0;
    
    if (cacheAge < cacheTTL) {
        // 构造缓存响应(实际场景中CloudFront会自动处理缓存读取,此逻辑用于特殊自定义需求)
        const cachedResponse = {
            status: '200',
            statusDescription: 'OK',
            headers: {
                'cache-control': [{ key: 'Cache-Control', value: `max-age=${cacheTTL}` }]
                // 此处需结合实际缓存存储逻辑填充响应内容,原生缓存场景可省略此分支
            }
        };
        callback(null, cachedResponse);
    } else {
        // 缓存过期,放行请求回源
        callback(null, request);
    }
};

2. Cache Response触发器(强制设置缓存头)

在源站返回内容后触发,强制设置缓存头确保3600秒的缓存周期:

exports.handler = (event, context, callback) => {
    const response = event.Records[0].cf.response;
    // 覆盖源站返回的缓存头,强制缓存3600秒
    response.headers['cache-control'] = [{ key: 'Cache-Control', value: 'max-age=3600, public' }];
    callback(null, response);
};

注意事项

  • Lambda Edge必须部署到us-east-1区域,再绑定到对应CloudFront分发的触发器上。
  • 配置源站时要确保HTTPS设置正确,若API需要自定义请求头,需在CloudFront源站配置里添加。
  • 若请求带Authorization这类鉴权头,不要将其加入缓存键,否则每个不同鉴权请求都会生成独立缓存,无法达到减少回源的目的。

内容的提问来源于stack exchange,提问作者porton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:00:13