Troubleshooting using HTTP Headers Steve Miller-Jones Director of Product Management Velocity Barcelona, November 18th 2014
WHAT DO YOU NEED DELIVERED TODAY? When you’re delivering content to your end users with a CDN, you want to check what’s happening with specific objects or spot check what’s is happening with a new feature you’ve introduced or a new file version you’ve just published. How does your CDN help?
What is troubleshooting with headers? Request debug information about an object from the CDN edge Debugging request / response flow Provides detail to monitoring tools
What is troubleshooting with headers? Request debug information about an object from the CDN edge Debugging request / response flow Provides detail to monitoring tools Access to headers is secure for each customer
What is troubleshooting with headers? Request debug information about an object from the CDN edge Debugging request / response flow Provides detail to monitoring tools Access to headers is secure for each customer Individual requests define what is returned
What can you find out? Is this response cachable? Was the request a cache hit, refresh hit, cache miss, refresh miss etc Freshness lifetime remaining Freshness Lifetitme total Freshness lifetime “reason” Describes if requested object is cacheable Use Case: To determine what EdgePrisim thinks about the cacheability of the object. Possible Values: Yes No Negative
What can you find out? Is this response cachable? Describes the hit type for requested object. Use Case: To determine if EdgePrism had a cache hit or miss on an object, what type of hit or miss it was. Possible Values: Is this response cachable? Was the request a cache hit, refresh hit, cache miss, refresh miss etc. Freshness lifetime remaining Freshness Lifetitme total Freshness lifetime “reason” HIT IMS_HIT MISS NEGATIVE_HIT REFRESH_HIT DENIED REF_FAIL_HIT OFFLINE_HIT REFRESH_MISS REDIRECT CLIENT_REFRESH_MISS
What can you find out? Describes the number of seconds left before this object expires from the cache. It is the TTL of the object. Use Case: Determine how much time EdgePrism believes this object has left before it expires. Is this response cachable? Was the request a cache hit, refresh hit, cache miss, refresh miss etc. Freshness lifetime remaining Freshness Lifetitme total Freshness lifetime “reason”
What can you find out? Is this response cachable? Returns the total number of seconds for the objects' whole life. This is the total life of the object from the time it entered the cache until it expires (age+ttl). Use Case: Determine how much time EdgePrism plans to hold this object since it entered cache. Use to see if the expire time is being set correctly on an object. Is this response cachable? Was the request a cache hit, refresh hit, cache miss, refresh miss etc. Freshness lifetime remaining Freshness Lifetime total Freshness lifetime “reason”
What can you find out? Is this response cachable? Describes how Freshness Lifetime total was derived Use Case: Gather more data about how the expiry time was determined. Possible values: unknown - data used to calculate not available headers - Header data used to derive life span options - Service configuration derived life span default - EdgePrism’s default global settings nocache - object not cachable cdnrule - Rules at the Edge applied Is this response cachable? Was the request a cache hit, refresh hit, cache miss, refresh miss etc. Freshness lifetime remaining Freshness Lifetime total Freshness lifetime “reason”
How do you do it? HTTP Request: > GET / HTTP/1.1 > Host: www.xxxxx.com > Accept: */* > Accept-Encoding:gzip,deflate > User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; smj) > X-LLNW-Dbg-Secret:YYYYYYY > X-LLNW-Dbg-Hdrs:cache-hit-type,ttl,is-cacheable
How do you do it? Not supposed to be cachable Is not cached HTTP Response: < HTTP/1.1 200 OK < Date: Fri, 14 Nov 2014 10:09:45 GMT < Cache-Control: no-cache, max-age=0, must-revalidate, no-store < Content-Type: text/html;charset=UTF-8 < Content-Language: en < Vary: Accept-Encoding < Content-Encoding: gzip … < X-LLNW-Dbg-Is-Cacheable: No < X-LLNW-Dbg-Cache-Hit-Type: MISS < X-LLNW-Dbg-TTL: 0 seconds Not supposed to be cachable Is not cached Still not cached
How do you do it? HTTP Request: > GET /images/background/imagename.jpg HTTP/1.1 > Host: www.xxxxx.com > Accept: */* > Accept-Encoding:gzip,deflate > User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; smj) > X-LLNW-Dbg-Secret:YYYYYYY > X-LLNW-Dbg-Hdrs:cache-hit-type,ttl,is-cacheable
How do you do it? Should be cacheable Is in cache HTTP Response: < HTTP/1.1 200 OK < Server: Apache < Accept-Ranges: bytes < Cache-Control: max-age=600 < Content-Type: image/jpeg < Date: Fri, 14 Nov 2014 10:27:28 GMT < Last-Modified: Fri, 31 Oct 2014 09:34:15 GMT < Expires: Fri, 14 Nov 2014 10:37:28 GMT < Content-Length: 3582308 < Connection: keep-alive < X-LLNW-Dbg-Is-Cacheable: Yes < X-LLNW-Dbg-Cache-Hit-Type: HIT < X-LLNW-Dbg-TTL: 382 seconds Should be cacheable Is in cache 382 seconds before refresh check
WE EMPOWER YOU TO DELIVER THE BEST DIGITAL EXPERIENCES. LIMELIGHT CONFIDENTIAL
THE LIMELIGHT DIFFERENCE The world’s largest private CDN. Backed by industry experts. Delivers digital experiences quickly, reliably, and securely every time.