通过浏览器或curl执行SPARQL查询时,它比使用JavaScript提取的同一浏览器中的查询速度快得多。例如,DBpedia上的select * {?s ?p ?o.}在浏览器中花费400-1000毫秒,而使用JavaScript提取则花费几秒钟。在两种情况下,行数都限制为10000(否则,完整的DBpedia将太大)。这不仅限于DBpedia,它也发生在我们自己的SPARQL端点上,该端点包含大约10万个三元组。我正在使用Firefox开发人员版65.0b3(64位)。如何使用fetch获得相同或至少相似的性能?要执行MWE,需要绕过CORS规则。



<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>
  <script>
	const ENDPOINT = "http://dbpedia.org/sparql"
	const GRAPH = "http://dbpedia.org";

	function sparql(endpoint, graph, query)
	{
	  const url = endpoint +
	  '?query=' + encodeURIComponent(query) +
	  '&format=json'+
	  '&default-graph-uri=' + encodeURIComponent(graph);
	  return fetch(url);
	}
  const query = "select * {?s ?p ?o.}";
	sparql(ENDPOINT,GRAPH,query);
  </script>
</body>
</html>





javascript - Virtuoso SPARQL查询在JavaScript提取上很慢-LMLPHP
javascript - Virtuoso SPARQL查询在JavaScript提取上很慢-LMLPHP

最佳答案

查看请求标头中的差异(尤其是,但不仅限于Accept: */*Accept: text/html,application/xhtml..., */*;q=0.8)。

我相信,如果将JS/fetch() request headers设置为与浏览器相同,则会发现响应时间匹配。

07-24 19:15
查看更多