Static Files (HTTP/2)

Serves 20 static files of various types and sizes over HTTP/2 with TLS, simulating a realistic browser page load with multiplexed streams.

Connections: 64, 256, 1,024 Concurrent streams per connection: 100

Workload

The load generator (h2load) requests 20 static files in a round-robin pattern across multiplexed streams:

  • CSS (5 files, 1.2–12 KB): reset.css, layout.css, theme.css, components.css, utilities.css
  • JavaScript (4 files, 3.2–35 KB): analytics.js, helpers.js, app.js, vendor.js, router.js
  • HTML (2 files, 1.1–1.5 KB): header.html, footer.html
  • Fonts (2 files, 32–38 KB): regular.woff2, bold.woff2
  • SVG (2 files, 4.5–8 KB): logo.svg, icon-sprite.svg
  • Images (3 files, 18–85 KB): hero.webp, thumb1.webp, thumb2.webp
  • JSON (1 file, 0.9 KB): manifest.json

Total payload: ~325 KB across 20 files.

What it measures

  • Static file serving throughput over HTTP/2
  • HTTP/2 multiplexing efficiency with varied response sizes
  • Content-Type handling for different file types
  • Memory-mapped or pre-loaded file serving performance
  • TLS overhead with realistic mixed payloads

How it differs from baseline-h2

Baseline (HTTP/2)Static Files (HTTP/2)
EndpointSingle GET /baseline220 different /static/* URIs
Response size~2 bytes0.9–85 KB (varied)
Content typestext/plainCSS, JS, HTML, fonts, SVG, WebP, JSON
h2load modeSingle URIMulti-URI (-i flag, round-robin)

Framework requirements

To participate in this test, a framework must:

  1. Listen on port 8443 with TLS and HTTP/2 enabled
  2. Load TLS certificates from /certs/server.crt and /certs/server.key
  3. Pre-load files from /data/static/ and serve them at GET /static/<filename> with correct Content-Type
  4. Add "static-h2" to the tests array in meta.json

Parameters

ParameterValue
Endpoint20 URIs under /static/*
Connections64, 256, 1,024
Streams per connection100 (-m 100)
Duration5s
Runs3 (best taken)
Load generatorh2load with -i (multi-URI)