Dart/Flutter: 快速检查 404 链接列表

Dart/Flutter: Quickly check list of links for 404

我正在构建一个使用外部服务的应用程序,该服务向 PDF 文档提供 URL 列表 link。对于其中一些 URL 的资源不存在 - 404.

我尝试构建以下内容以循环遍历 URL 的列表并获取资源是否存在,但它运行缓慢 - 每个 link 大约 100 毫秒到 500 毫秒秒。

有人对如何快速判断资源是否存在有任何建议吗?

    var client = http.Client();
    for (Article article in articles) {
      if (article.downloadUrl != null) {
        Uri url = Uri.parse(article.downloadUrl!);
        http.Response _response = await client.head(url);
        if (_response.statusCode == 404) {
          print('Bad - ${article.downloadUrl}');
        } else {
          print('Good - ${article.downloadUrl}');
        }
      }
    }

加速它的一个简单方法是利用异步功能。这将允许它同时 运行 所有请求,而不是像您的代码显示的那样一次一个请求。

var client = http.Client();
List<Future> futures = [];
for (Article article in articles) {
  if (article.downloadUrl != null) {
    Uri url = Uri.parse(article.downloadUrl!);
    futures.add(isValidLink(url));
  }
}
await Futures.wait(futures);


Future<void> isValidLink(Uri url) async {
    http.Response _response = await client.head(url);
    if (_response.statusCode == 404) {
      print('Bad - ${article.downloadUrl}');
    } else {
      print('Good - ${article.downloadUrl}');
    }
}