in-web-browsers icon indicating copy to clipboard operation
in-web-browsers copied to clipboard

Server Timing API

Open lidel opened this issue 5 years ago • 0 comments

The Server Timing API allows you to pass request-specific timing data from your server to the browser via response headers

Potential uses

In IPFS context, it could be a way for HTTP Gateway to indicate how long it took to

  • execute specific subtask of /api/v0/ call
  • return valid data for /ipfs/* request, namely:
    • lookup data in local datastore (if present) or find it on the swarm
    • discover providers (could have separate metrics for dht, bitswap)
    • download data from providers etc

Improved debugging

As illustrated by @Gozala in https://github.com/ipfs-shipyard/ipfs-webui/pull/1534#issuecomment-652645285 I think bifrost team and other gateway providers could leverage it for debugging gateway performance when processing a specific request.

Improved UX in browser context

User agents (eg. IPFS-aware web browser) could utilize hints passed in Server Timing headers to improve user experience by providing higher resolution feedback about the state of request.

Example

> GET /ipfs/QmFoo HTTP/1.1
> Host: ipfs.io


< HTTP/1.1 200 OK
< Server-Timing: miss, ds;dur=53, dht;dur=47.2, bitswap;dur=120
< Server-Timing: cache;dur=23.2

References

  • https://web.dev/custom-metrics/#server-timing-api
  • https://w3c.github.io/server-timing/

lidel avatar Aug 12 '20 10:08 lidel