Минимизируйте http-запросы jjuery-анализа ajax

Я создал нижеприведенную функцию, которая в основном анализирует HTML данного URL, сканирует определенный класс и обрабатывает найденный текст:

Небольшой образец моей функции:

function displayRating(theID){
  var $theUrl = $('#' + theID + ' > a').attr('href');
  jQuery.support.cors = true;
  var num, str, nums=[], avgnum, avgstr, avgnums=[];
  $.ajax({
    url: $theUrl,
    type: "GET",
    timeout: 3000,
    dataType: "text",
    success: function(data) {
      $(data).find(".count").each(function () {
        str = $(this).text();
        num = parseInt(str.substring(1,str.length-1), 10);
        nums.push(num);
      });
      var totalSum = 0;
      for (var i = 0; i < nums.length; i++){
        totalSum += nums[i];
      }
     more code here...
  });
}

Я вызываю эту функцию 15 раз, потому что мне нужно отобразить несколько данных, которые можно собрать с нескольких страниц. С этим методом я надеялся, что число http количество запросов будет таким же, как число, которое вызывается функцией (15). Тем не менее, я получаю чрезвычайно большое число (340), что означает, что при разборе HTML он также запрашивает в фоновом режиме все изображения, включенные в URL-адреса, которые я вызываю. Это означает, что время загрузки страницы недопустимо (5-6 секунд).

У меня вопрос: могу ли я оптимизировать эту функцию, чтобы она читала HTML как обычный текст, не загружая в фоновом режиме все изображения? Есть ли способ минимизировать эти запросы?

Примечание: к сожалению, PHP не вариант.

1 ответ

Решение

Вы можете заменить атрибут src на пользовательский, разобрать новую строку и затем заменить правильный тег src:

data=data.replace(/ src=/g," mySrc=");
$(data).find(".count")...
...
data = data.replace(/ mySrc=/g," src=");

Вот JSfiddle, использующий (но не загружающий) изображение вашего профиля.

Обратите внимание, что вы должны использовать пользовательский атрибут (в примере mySrc), не найденный в строке данных.

Другие вопросы по тегам