【问题标题】:How to make multiple parallel web html requests in a Chrome Extension?如何在 Chrome 扩展程序中发出多个并行 Web html 请求?
【发布时间】:2011-08-23 12:54:39
【问题描述】:

我想在 Chrome 扩展程序中检索和解析多个 html 页面。

对每个请求使用 Web Worker 似乎是一种让它们并行执行的简单方法。那可能吗?我的尝试失败了,可能是因为它是已知的permissions bug

作为一种解决方法,我想我可以让主扩展页面执行多个异步 XmlHttpRequest,然后让回调将结果页面发送到 Web Worker 以进行并行解析。但是这种方法提出了一个问题,Chrome 一次可以发出多少个异步并行请求?这个问题已经被问到here,没有答案。

我正在编写的 Chrome 扩展是一个浏览器操作。

工人代码:


// Triggered by postMessage in the page
onmessage = function (evt) {
    var message = evt.data;
    postMessage(message.count + " started");
    update(message.count, message.url);
};

// parse the results page
function parseResponse(count, url, resp) {
    var msg = count.toString() + " received response ";
    postMessage(msg);
}

// read the Buganizer URL and parse the result page
var update = function(count, url) {
  var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
          parseResponse(count, url, xhr.responseText);
        }
      }
  xhr.onerror = function(error) {
      var msg = "!>: " + count + ": error ";
      postMessage(msg);
  }
  var url = "http://www.hotgrog.com"; // for testing (manifest has permissions for this url)
  xhr.open("GET", url, true);
  xhr.send();
  postMessage(url);
}

【问题讨论】:

  • 您确定需要并行解析吗?我感觉 99% 的时间会花在请求页面上,而 1% 会花在解析上。在这种情况下,工人并不是真的有用。 Ajax 请求已经是异步的,因此无论您是否将它们放入工作程序中,它都不会改变任何东西 - 您将遇到完全相同的网络限制。
  • 是的,所以如果我不使用单独的工作人员,我会问在 Chrome 中可以同时发生多少个 XmlHttpRequest?
  • 我猜,在你链接的那个问题中已经回答了(从顶部开始的第二个答案)。

标签: concurrency xmlhttprequest google-chrome-extension web-worker


【解决方案1】:

您是否考虑过尝试异步加载器,例如 RequireJSCurl

看看作者对WHY we should use his product的解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多