Inside my lambda edge viewer response function I need to understand if the response comes from Cloudfront cache or Origin server -
I was thinking to pass the response header from origin response function however its' value stays in cache so on subsequent requests it's also returned.
Do you think it's possible to achieve such detection?
I was being able to got it working by checking the date
header value with the date of execution in viewer response -
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';