Виртуозный SPARQL-запрос замедлен при получении JavaScript - PullRequest
0 голосов
/ 14 декабря 2018

Когда я выполняю запрос SPARQL через браузер или curl, это происходит намного быстрее, чем в том же браузере, использующем выборку JavaScript.Например, select * {?s ?p ?o.} в DBpedia занимает 400-1000 мс в браузере и несколько секунд, используя выборку JavaScript.Количество строк ограничено 10000 в обоих случаях (в противном случае полная DBpedia была бы слишком большой).Это не ограничивается DBpedia, это происходит и с нашей собственной конечной точкой SPARQL, которая содержит около 100 тыс. Троек.Я использую Firefox Developer Edition 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>

Network Tab of the MWE Network Tab of the query URL in Firefox

1 Ответ

0 голосов
/ 14 декабря 2018

Посмотрите на различия в заголовках запросов (особенно, но, возможно, не только Accept: */* против Accept: text/html,application/xhtml..., */*;q=0.8).

Я полагаю, если вы сделаете JS / fetch () заголовки запросов так же, как в браузере, время отклика будет совпадать.

...