title: How many bytes in one round-trip for an HTTP/2 browser request over mobile networks?
body: <p>I’m working on a site with the goal of being <em>as fast as possible</em>. This goal requires <strong>letting mobile clients make the initial HTTP request in <em>one</em> round-trip</strong>. (HTTP/2’s HPACK should take care of subsequent requests for the same page.)</p>
  
  <p>The conventional wisdom is that 14 kilobytes of compressed <em>response</em> is as much as you can expect out of the first round-trip for a web page (because of TCP Slow Start), but similar calculations as that theory’s don’t produce similar results when testing.</p>
  
  <p>My target connection has the following characteristics:</p>
  
  <ul>
  <li><strong>3rd-generation</strong> cellular data protocol (3G)</li>
  <li><strong>200ms latency</strong> (400ms RTT)</li>
  <li><strong>400Kb/s maximum download bandwidth</strong></li>
  <li><a href="https://www.opensignal.com/reports/2019/07/usa/mobile-network-experience" rel="nofollow noreferrer"><strong>300Kb/s maximum upload bandwidth</strong></a></li>
  <li><strong>0% packet loss</strong>, at least for the purposes of this question</li>
  <li><strong>HTTP/2 over TLS</strong></li>
  <li>Assume <strong>Android Chrome</strong> for the client</li>
  </ul>
  
  <p>Ultimately, I want to set performance goals for how big the app-controllable request headers can be; mainly <code>Etag</code> and <code>Cookie</code>. (I can’t really control <code>Referer</code> and such, but at least they have a known maximum size in practice.)</p>