На сколько мне известно в require проверяет, загружался ли модуль и если да, то он просто возвращает уже проинициализированный объект
Осторожно с относительными путями (типа './file.js'), одна и та же строчка в зависимости от места расположения вызывающего скрипта, будет искать модули в разных местах и если там будут файлы с теми же именами (например разные версии модуля) то вопрос, будет ли использован кеш для второго вызова но другого скрипта или нет.