X-Timer
Performance debugging on Fastly's CDN relies on the X-Timer unofficial response header, which reports internal timing data as a compact string of event codes and timestamps.
Usage
Fastly adds the X-Timer header to every response passing through its network. The value is a comma-separated string of event codes and timestamps recording how long the request spent inside the CDN.
The header is primarily useful for performance
debugging. By comparing the start timestamp with the
Varnish End duration, operators and developers see
how much time the CDN spent processing a request
versus how much time the origin server consumed. A
small VE value on a cache hit confirms the response
was served from memory. A large VE value on a miss
reveals slow origin response times.
Fastly documents the single VS and VE pair
alone. An additional VS entry has been observed on
some shielded services, with a single VE covering
combined processing time, though the pattern does
not appear on every multi-tier response.
Values
S (Start)
The S field is a Unix timestamp in seconds, recorded
to microsecond precision, marking the moment Fastly
first received the request. For example,
S1709123456.789012 means the request arrived at
Unix time 1709123456.789012.
VS (Varnish Start)
The VS field marks the start of Varnish processing
within a cache node. The value is typically 0,
indicating processing began immediately after request
receipt.
VE (Varnish End)
The VE field is the total time in milliseconds the
cache node spent handling the request. On a cache hit,
this value is often 0 or a single digit because
serving from memory takes less than a millisecond. On
a cache miss, the value reflects the round-trip time
to the origin server plus any processing overhead.
Example
A straightforward cache hit served from memory. The
request arrived at Unix time 1770690977.981692. The
VE value of 2 means the edge node spent
approximately 2 milliseconds processing the request,
confirming the response was served from cache.
X-Timer: S1770690977.981692,VS0,VE2
A cache miss where the origin server responded slowly.
The VE value of 409 means the edge node spent
409 milliseconds waiting for the origin server to
fulfill the request.
X-Timer: S1770286999.047265,VS0,VE409
On some shielded services an extra VS field has
been observed, making the format VS0,VS0,VE<n>. The doubled
VS0 is an observed pattern on shielded services and
appears to correspond to the shield node start and the
edge node start, with a single VE recording total
processing time across both layers. Here the combined
time for shield and edge was 69 milliseconds.
X-Timer: S1768296487.178015,VS0,VS0,VE69
The X-Timer header works alongside X-Served-By and X-Cache to give a complete picture of CDN behavior. Together, these headers reveal which nodes handled the request, whether the response was cached, and how long each layer took.
X-Served-By: cache-lga21984-LGA, cache-pdx12334-PDX
X-Cache: MISS, HIT
X-Timer: S1768296487.178015,VS0,VS0,VE69