Я это делаю на уровне PHP-фреймворка:
1. Изначально - всегда добавляются только те, которые присутствуют в шаблоне на каждой странице.
2. Когда я задействую нужный мне на странице блоковый визуальный модуль (PHP+JS), перед добавлением JS-скрипта в секцию head происходит проверка его существования в ней: возможно другие подобные модули уже запросили этот файл стилей, функцию или библиотеку.
3. На выходе: ТОЛЬКО НУЖНЫЕ ДЛЯ ЭТОЙ СТРАНИЦЫ js-скрипты, css и прочее, в соответствии с добавленными визуальными модулями, необходимость использования которых зависит от того, что должно отображаться на странице и за этим следит фреймворк.
Конкретно, если это делать на клиенте через JS - нужен механизм на JSON-файле с "деревом" зависимостей объектов, обрабатываемых на страницах (URL-ах):
[URL1] => [дерево объектов, с которыми работает js]
...........
[URLN] => [дерево объектов, с которыми работает js]