Web Performance, Caching & CDNs

DASH streaming

/ dash /

If adaptive bitrate streaming is the idea — switch quality to match your connection — DASH is one of the standard recipes that actually implements it. DASH stands for Dynamic Adaptive Streaming over HTTP. It is an open international standard that defines how to describe a video that exists at several qualities and how a player should fetch its pieces over ordinary HTTP. Apple's HLS (HTTP Live Streaming) is the other widely used recipe; they differ in details but share the same core design.

Concretely, the content provider encodes the video at multiple bitrates, segments each version into short chunks, and writes a manifest. In DASH this manifest is an XML file called the MPD (Media Presentation Description); in HLS it is a text playlist (an .m3u8 file). The manifest lists, for each quality level, the URLs of its segments. The player reads the manifest, requests segments over plain HTTP one by one, measures throughput and buffer level after each, and uses that to choose the next segment's quality. Because everything is just HTTP requests for files, DASH and HLS need no special streaming server — an ordinary web server or, far more commonly, a CDN can serve the segments.

Why it matters: DASH and HLS are how essentially all on-demand and much live video reaches you today, from short clips to full films. Building streaming on HTTP rather than a bespoke protocol was the key insight: it lets video reuse the entire web infrastructure — caches, CDNs, proxies, and firewalls all already handle HTTP — so segments cache at the edge exactly like images. DASH is codec-agnostic and vendor-neutral by design, while HLS historically dominated on Apple devices; in practice large services often publish both. The honest note: DASH defines the delivery and adaptation framework but deliberately leaves the actual bitrate-choosing logic to the player, so two DASH players can behave quite differently on the same network.

A player loads an MPD manifest listing a clip at 480p, 720p, and 1080p, each cut into 4-second segments. It fetches segment 1 at 720p, measures a fast download, and requests segment 2 at 1080p — all as ordinary HTTP GETs a CDN can cache.

A manifest plus HTTP-fetched segments: streaming on the plain web stack.

DASH and HLS standardize the manifest and segment delivery, not the decision of which bitrate to pick — that adaptation logic lives in the player and is not part of the format, which is why playback smoothness varies between apps.

Also called
MPEG-DASHDynamic Adaptive Streaming over HTTPHLSDASH 串流動態自適應 HTTP 串流