Предварительная загрузка Javascript работает благодаря использованию механизма кэширования, используемого браузерами.
Основная идея заключается в том, что после загрузки ресурса он некоторое время хранится локально на клиентском компьютере, поэтому браузеру не нужно снова извлекать ресурс из сети, в следующий раз требуется для отображения / использования браузером.
Ваш код, вероятно, работает просто отлично, и вы просто неправильно понимаете, что отображает Fire Bug.
Чтобы проверить эту теорию, просто нажмите www.google.com с чистым кешем. То есть сначала очистите историю загрузок.
Первый раз через все, вероятно, будет иметь статус 200 ОК. Это означает, что ваш браузер запросил ресурс, а сервер отправил его. Если вы посмотрите на нижнюю часть окна Fire Bug, там будет указано, насколько большой была страница, скажем, 195 Кб, и какая часть этого была извлечена из кэша. В этом случае 0Kb.
Затем перезагрузите ту же страницу, не очищая кеш, и вы все равно увидите такое же количество запросов в FireBug.
Причина этого достаточно проста. Страница не изменилась и по-прежнему нуждается во всех ресурсах, которые были необходимы ранее.
Отличие состоит в том, что для большинства этих запросов сервер возвращал статус 304 Not Modified Status, поэтому браузер проверил свой кэш, чтобы убедиться, что ресурс уже сохранен локально, что в данном случае и с предыдущей страницы. нагрузки. Так что браузер просто вытащил ресурс из локального кэша.
Если вы посмотрите на нижнюю часть окна Fire Bug, вы увидите, что размер страницы все еще остается прежним (195 КБ), но что большая его часть, в моем случае 188 КБ, была локально извлечена из кэша.
Таким образом, кеш работал, и во второй раз, когда я нажал на Google, я сэкономил 188 КБ загрузки.
Я уверен, что вы найдете то же самое с предварительной загрузкой изображений. Запрос все еще выполняется, но если сервер вернет статус 304, то вы увидите, что изображение фактически извлекается из локального кэша, а не из сети.
Таким образом, при кэшировании преимущество заключается не в том, что вы уничтожаете все будущие запросы ресурсов, т.е. поиск в Uri все еще выполняется в сети, а скорее в том, что по возможности браузер будет извлекать данные из локального кэша, чтобы удовлетворить потребность в контенте. вместо того, чтобы бегать по сети в поисках.