Предполагается, что $ batch-запросы в xrm используются для определения количества операций, которые либо завершаются успешно, либо как группа.
https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/execute-batch-operations-using-web-api
IE вместо этогоиз
POST [Organization URI]/api/data/v9.0/tasks
{ ...payload for task1.. }
POST [Organization URI]/api/data/v9.0/tasks
{ ...payload for task2.. }
Вы создаете запрос
POST [Organization URI]/api/data/v9.0/$batch
{ .... shared payload ... }
Теперь у меня вопрос, должны ли они также обеспечивать повышение производительности при загрузке клиента?То есть, когда я буду использовать $ batch, общая производительность клиента должна быть лучше?
РЕДАКТИРОВАТЬ
Тестовый фрагмент, который я использовал:
syncTest = function() {
var now = Date.now();
var count = 0;
var done = function() {
count++;
if (count === 2) {
console.log("Sync: " + (Date.now() - now) + " ms");
}
};
$.ajax({method:"GET",url:"/api/data/v9.0/contacts(53c4918e-5367-e911-a83b-000d3a31329f)", success: function() { done(); }});
$.ajax({method:"GET",url:"/api/data/v9.0/contacts(50b297c5-4867-e911-a843-000d3a3130ea)", success: function() { done(); }});
};
asyncTest = function() {
var now = Date.now();
var done = function() {
console.log("Async: " + (Date.now() - now) + " ms");
};
var headers = {
'Content-Type': 'multipart/mixed;boundary=batch_123456',
'Accept': 'application/json',
'Odata-MaxVersion': '4.0',
'Odata-Version': '4.0'
};
var data = [];
data.push('--batch_123456');
data.push("Content-Type: application/http");
data.push("Content-Transfer-Encoding:binary");
data.push('');
data.push('GET /api/data/v9.0/contacts(53c4918e-5367-e911-a83b-000d3a31329f) HTTP/1.1');
data.push('Content-Type:application/json;type=entry');
data.push('');
data.push('{}');
data.push('--batch_123456');
data.push("Content-Type: application/http");
data.push("Content-Transfer-Encoding:binary");
data.push('');
data.push('GET /api/data/v9.0/contacts(50b297c5-4867-e911-a843-000d3a3130ea) HTTP/1.1');
data.push('Content-Type:application/json;type=entry');
data.push('');
data.push('{}');
data.push('--batch_123456');
var payload = data.join('\r\n');
$.ajax({method:"POST",url:"/api/data/v9.0/$batch", data:payload, headers: headers, success: function() { done(); }});
};
Метод тестирования - очистить кэш браузера, выполнить фрагмент кода;время (в среднем за пять попыток):
$batch - 242ms per combined request (average for 5x)
one by one in parallel - 195ms per combined request (average for 5x)
Так что, похоже, $ batch фактически добавляет некоторые накладные расходы.