В основе лежит принцип асинхронности. Учитывая, что вопрос содержит тег Angular, то в общем можно реализовать приблизительно по такому принципу:
<my-app>
<header>
<nav>
<a href="#">Page 1</a>
<a href="#">Page 2</a>
<a href="#">Page 3</a>
</nav>
</header>//статичный блок
<page1-content> </page1-content>
или
<page2-content> </page2-content>
или
<page3-content> </page3-content>//основной динамичный блок, который меняется при переходе на нужную страницу
<async-content> </async-content>//асинхронный динамичный блок с видео / музыкой / плясками
<footer></footer>//статичный блок
<my-app>
Как написали выше, идёт слежение за изменением состояния, условно говоря, основного контента и асинхронного. Переходы по страницам и др.действия в поле зрения основного контента не затрагивают асинхронный блок, он отслеживается независимо.