Всем спасибо, похоже я нашел решение. На равне с типами запроса GET, POST и другими оказывается существует еще тип запроса HEAD. Этот тип запроса позволяет запросить заголовки ответа, без самого тела ответа.
Соответственно факт изменения файла можно проверить через сверку заголовка ETag:
(await fetch('/', { method: 'HEAD' })).headers.get('ETag');
Заголовок HTTP ответа ETag является идентификатором специфической версии ресурса. Если ресурс по заданному URL изменился, будет сгенерированно новое значение Etag. Поэтому Etag чем-то похож на отпечаток ("fingerprints") и позволяет быстро определить являются ли два представления ресурса одними и теме же.
https://developer.mozilla.org/ru/docs/Web/HTTP/Hea...