What response data param reflect time spent waiting for a response from origin the most accurately?

According to this doc https://developer.moovweb.com/guides/response_headers following params are used to reflect time spent waiting for a response from origin: sf, bf, wp. What response data param reflect time spent waiting for a response from origin the most accurately?

If you are simply proxying the origin, then sf is the time spent waiting for the origin to return a response. If you are sending your own request from a serverless function, or during server side rendering, you need to add your own custom timing to track this. See Tracking your own timings.

If you look at the overview of the platform at https://developer.moovweb.com/guides/overview you will observe that there are two cache layers - the edge and the shield. Most of the requests to your site are served by the global edge POPs but, when the site client is geographically very close to the actual shield POP, then the shield POP is both L1 and L2. In that case sf metric does not exist - as edge and shield are one and the same - but bf still exists and you can rely on it.

To clarify further:

of stands for edge fetch time
sf stands for shield fetch time
bf stands for backend fetch time

When request is going through both edge and shield and it’s a miss on both, you will see all three.
When request is going through shield only then you will see just of and bf.
When there is a hit on either edge or shield then there will be no bf.

So you can rely on bf to always show you backend fetch time, if an actual backend fetch was issued.