preload = "истинные" гиперссылки - PullRequest
0 голосов
/ 20 июля 2010

Есть ли метод, сценарий javascript или что-нибудь, что могло бы позволить предварительно загружать гиперссылки на странице? Например, я хочу, чтобы, когда пользователь заходит на http://ahostel.lt/ и страница полностью загружается, скрипт начал бы предварительную загрузку других страниц в навигации (Бронирование, Карта, Услуги, Осмотреться, [...]). Поэтому, когда пользователь нажимает на любую из этих гиперссылок, страница загружается мгновенно. Как это можно сделать?

Ответы [ 4 ]

2 голосов
/ 20 июля 2010

Вы можете сделать что-то вроде этого:

$(function() {
  $('a').each(function() {
    new Image().src = $(this).attr('href'); // or just this.href
  });
});

Это не изображения, но браузер этого не знает. Возможно, вы захотите немного замедлить это, чтобы не задушить соединение слишком сильно:

$(function() {
  var urls = $('a').map(function(_, a) { return a.href; }).get(0);
  var i = 0;
  function fetchOne() {
    if (i === urls.length) return;
    var img = new Image();
    img.load = fetchOne;
    img.src = urls[i++];
  };
  fetchOne();
});

edit & mdash; @ Adam очень хорошо говорит об «опасных» ссылках для получения. Возможно, было бы лучше иметь некоторые ссылки, помеченные как «noPrefetch» ​​(как класс или что-то еще), или в качестве альтернативы, только ссылки предварительной выборки, помеченные явно классом «prefetch».

1 голос
/ 20 июля 2010

На самом деле в спецификации HTML5 есть условия для этого, хотя в настоящее время он поддерживается только Firefox.

<link rel="next" href="page2.html">

Просто бросаю это вам как альтернативу без javascript.

1 голос
/ 20 июля 2010

Не пробовал, но на основании этого сообщения в блоге вы можете сделать следующее:

$("a").each(function(){
  $.ajax({ url:$(this).attr("href"), cache:true, dataType:"text" });
});

Вы должны быть осторожны, хотя, если у вас есть ссылки, такие как Выход из системы, пользователь может выйти из системы. В Википедии больше проблем с предварительной загрузкой .

0 голосов
/ 17 июня 2011

Объедините это с концепцией автономного хранения, и вы получите победителя. Все ваши основные страницы навигации могут быть предварительно выбраны, и каждая целевая страница из них может предварительно выбирать следующие и т. Д., Помещая их в автономное хранилище (window.localStorage или window.sessionStorage). Было бы здорово для JSON и т. Д. Вы могли бы лучше контролировать, чем с кешем, то, что нужно истечь или нет, поскольку ваши ключи могут содержать индикатор временной метки. Вероятно, больше подходит для сайтов электронной коммерции, где каталоги продуктов не нужно загружать каждый раз. Например, вы можете поместить туда свой JSON и немедленно вернуть его к жизни.

Я не уверен, подходит ли автономное хранилище для этого, учитывая кеш. Мысли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...