When a request contains an ETag value in its If-None-Match header, the backend
may send a request ID (from Rack) that does not correspond to a value in Peek's
Redis cache (because we aborted the Rails processing in our ETag middleware).
Because a cached response (304) has to replace the headers with those from the
previous 200 - https://tools.ietf.org/html/rfc7234#section-4.3.4 - we add a
custom header that will only be present in cache hits, that can tell the
frontend to ignore these.
But first, rewrite the performance bar in Vue:
1. Remove the peek-host gem and replace it with existing code. This also allows
us to include the host in the JSON response, rather than in the page HTML.
2. Leave the line profiler parts as here-be-dragons: nicer would be a separate
endpoint for these, so we could use them on Ajax requests too.
3. The performance bar is too fiddly to rewrite right now, so apply the same
logic to that.
Then, add features! All requests made through Axios are able to be tracked. To
keep a lid on memory usage, only the first two requests for a given URL are
tracked, though. Each request that's tracked has the same data as the initial
page load, with the exception of the performance bar and the line profiler, as
explained above.