最小化jQuery ajax解析的http请求

时间:2013-04-30 09:53:05

标签: jquery performance query-performance http-request

我创建了下面的函数,它基本上解析了给定网址的HTML,扫描某个类并处理它找到的文本:

我的一小部分功能:

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时它还会在后台请求我调用的网址中包含的所有图像。这意味着页面的加载时间是不可接受的(5-6秒)。

我的问题是:我可以优化此功能,以便将HTML作为纯文本读取而不在后台加载所有图像吗?有没有办法尽量减少这些要求?

注意:不幸的是,PHP不是一种选择。

1 个答案:

答案 0 :(得分:0)

你可以用自定义的src替换src属性,解析新的字符串,然后替换正确的src标记:

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

Here是一个使用(但不加载)你的个人资料图片的JSfiddle。

N.B。你应该在数据字符串中找到自定义的attribut(示例中的mySrc)。