Остановите меня, если несу чушь, но в теории можно использовать side-channel attack.
Например мы знаем что yandex использует скрипт
https://yastatic.net/jquery/2.1.4/jquery.min.js
Тогда можно изменить время скачивания не кэшированной версии (Math.random() что бы сделать URL уникальным и пропустить кэш):
console.time('no cache');
fetch('https://yastatic.net/jquery/2.1.4/jquery.min.js?' + Math.random())
.then(r => r.text())
.then(() => console.timeEnd('no cache'));
А затем измерить время скачивания по прямой ссылке:
console.time('yandex');
fetch('https://yastatic.net/jquery/2.1.4/jquery.min.js')
.then(r => r.text())
.then(() => console.timeEnd('yandex'));
У меня получилось как то так:
По скрину видно что не кэшированная версия во много раз медленнее чем кэшированная. По понятным причинам это сработает только один раз. Так что понадобится логика что бы не выполнять эту проверку дважды для одного пользователя.