3. Есть вариант качать n байт и сравнивать хеш с тем же количеством из локального файла.
А если изменение произошло после этих N байт?
Имхо самое надёжное - сверять дату и размер + в любом случае перекачивать файл раз в некоторое время. Ну а вообще лучше всего такую проверку делать на сервере, если к нему есть доступ.