Every viewer gets a different playlist, and the cache must still work
Adverts have to play through the same player, the same decoder and the same buffer as the programme — many of these devices are televisions where you cannot ship an advertising component at all. So the advert segments are stitched into the playlist itself, and which advert a given viewer sees is decided per viewer, at the moment the break arrives.
The first attempt turned caching off for the whole path, because the playlist is personal. Origin traffic went up by four orders of magnitude and the bill arrived before the incident review did.
- R1The playlist is assembled for one viewer at the moment they ask for it, so two people watching the same programme in the same second receive different bytes. Nothing shared between viewers can be reused for it.
- R2The advert segments themselves are shared by everyone who is shown that advert, even though nobody's playlist is shared. They must be addressed by name alone, with nothing about the viewer in the address, so that one copy serves everybody.
- R3Creatives arrive in whatever the advertiser supplied. Before an advert's address goes into any playlist it must be re-encoded to match the programme's own encoding, because the player must not reconfigure its decoder mid-stream.
Outside every boundary: Edge (routes by path), Programme segments (cached for a day), Player (television, mostly), Ad decision (third party, often slow), an empty slot for the assembled for one viewer, tier 1, an empty slot for the one copy, shown to millions, tier 1, an empty slot for the makes a creative match the programme, tier 2 Connections: Player calls Edge Edge calls assembled for one viewer — never cached assembled for one viewer calls Programme segments — source manifest assembled for one viewer sends outbound traffic to Ad decision — which advert makes a creative match the programme publishes to one copy, shown to millions — re-encoded Edge calls one copy, shown to millions