PriorityPriority is the HTTP Priorities (RFC 9218) header expressing the relative priority of a requested resource. The client sends its preference on the request, and the server may override it on the response — so it is bidirectional.
The value is a structured field of urgency `u` (0-7, default 3) and the incremental flag `i` (e.g. `Priority: u=1, i`).
HTTP/2 had a complex tree-based prioritization scheme that interoperated poorly and was effectively deprecated; the much simpler 'Extensible Prioritization Scheme' replaced it. The Priority header expresses that scheme as a header: `u` (urgency) ranges 0 (highest) to 7 (lowest) with default 3, and `i` (incremental) marks a resource that can be rendered as partial data arrives.
Browsers assign priorities automatically by resource type (CSS and fonts high, lazy images low). Developers can adjust hints via HTML `<link>` or fetch's `priority`/`fetchpriority` attribute, which ultimately travel as this Priority header (or as a PRIORITY_UPDATE frame in HTTP/2 and HTTP/3).
Server override is the scheme's strength. Since the client doesn't fully know which resources are page-critical, the server can re-specify Priority on the response to optimize the actual send order. The `i` flag round-robin-interleaves several resources to aid progressive rendering, whereas non-incremental resources are better sent one at a time to completion. Note that priority is a hint — servers and intermediaries aren't required to honor it.
Priority: u=<0-7>[, i]e.g. Priority: u=1, i
u=<0-7> | Urgency: 0 is highest, 7 is lowest, default 3; smaller means handled sooner. |
i | The incremental flag: marks a resource whose partial bytes can be processed/displayed as they arrive (e.g. progressive images). |