Вы можете использовать обновление метатега, чтобы сделать это. Этот код обновляет страницу каждые 5 секунд:
<meta http-equiv="refresh" content="5">
Что касается вопроса о javascript, возможно, браузер обрабатывает setTimeout. Он говорит браузеру выполнить код в установленное время, а затем, когда часы меняются, код все еще выполняется в то время, когда часы изменились? Просто предположение, но я буду помнить об этом в следующий раз, когда буду использовать setTimeout.
Edit: Хорошо, это не будет работать для AJAX
Снова отредактируйте: это действительно хороший вопрос. Я уверен, что setTimeout функционирует, как я уже сказал выше, но вау, это головоломка.