Skip to main content

Rule examples: DASH

MPEG-DASH delivers adaptive streaming through an XML manifest (.mpd) that references fragmented MP4 segments (.m4s). As with HLS, the manifest must stay fresh while segments can be cached a little longer. This page provides a template of cache rules and a CORS header rule tuned for DASH players such as dash.js.

This page is for DASH you package yourself

These rules are for a standard property whose own origin already publishes DASH — the CDN caches and delivers those .mpd and .m4s files like any other files. Paradarum Live does not package DASH: managed live streams are delivered as HLS. See HLS rule examples and live playback and caching.

Manifest vs. segment TTLs​

A live .mpd is updated as the presentation advances, so it needs a very short TTL. The .m4s segments are immutable once published and can be cached longer to offload the origin.

File typePattern (case-insensitive regex)TTLWhy
Manifest (MPD)~* \.(mpd)$2 secondsMust stay fresh; the live presentation advances.
Media segment~* \.(m4s)$10 secondsImmutable within the rolling window.
tip

DASH and HLS share the same caching philosophy: short TTL on the manifest, modest TTL on the segments. If you serve both protocols from one property, use the combined manifest pattern below so a single rule covers .m3u8 and .mpd.

Manifest cache rule​

In the property's Rules tab, click Add cache rule and set:

  • Pattern: \.(mpd)$ — Regex match type (case-insensitive)
  • TTL: 2 seconds
  • Order: 1

Segment cache rule​

Add a second cache rule for the segments:

  • Pattern: \.(m4s)$ — Regex match type
  • TTL: 10 seconds
  • Order: 2
note

The .m4s segment extension is shared by HLS (with fragmented MP4 / CMAF) and DASH. A single segment rule with pattern \.(ts|m4s)$ therefore covers both protocols when you serve them side by side.

Serving HLS and DASH together​

If one property delivers both protocols from your origin, collapse the two manifest rules into one — a single cache rule with Pattern \.(m3u8|mpd)$ (Regex) and TTL 2 keeps every playlist fresh.

CORS header rule for dash.js​

dash.js loads the manifest and segments over fetch/XHR, so the responses need a permissive CORS header. Add a response header rule:

  • Action: Set
  • Header name: Access-Control-Allow-Origin
  • Header value: *
  • Apply to: Response
  • Pattern: empty (all requests)
tip

Use a specific origin instead of * to restrict which sites may embed your dash.js player.

A note on Paradarum Live properties​

Paradarum Live delivers streams as HLS, not DASH — so none of the rules on this page apply to a managed live stream. Its backing CDN property is created with its own read-only system rules (a manifest rule at TTL 2s, a ~* \.(ts|m4s)$ segment rule at TTL 10s, and an Access-Control-Allow-Origin: * CORS rule) that you cannot hand-edit. Use the templates here only for DASH that your own origin packages, on a standard property. See live playback and caching.

See also​