Код ниже испытывает 40 секунд. задержка между возникновением события load
, которое указывает, что серверу отправлено 10 МБ formdata
, и событие onreadystatechange
, которое указывает, что был получен некоторый ответ от сервера.
function SendData(formdata) {
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("load", function(e) {
console.log('Finished Transmitting Formdata to Server');
}, false);
xhr.onreadystatechange = function(e)
{
console.log('XHR State Changed');
if ( (xhr.readyState == 4) && (xhr.status == 200) )
console.log('Server Replied with Success');
}
xhr.open("POST", "receive.php");
xhr.send(formdata);
}
Файл receive.php
содержит только:
<?php
echo 'Formdata received Successfully';
?>
Q : что может быть причиной такой длительной задержки - почему консоль регистрирует 'XHR State Changed'
сообщение колоссальное 40сек. после регистрации сообщения 'Finished Transmitting Formdata to Server'
, ... и как правильно устранить неполадку, чтобы выяснить точную причину этой задержки?
Задержка происходит до xhr.readyState == 2
, что до HEADERS_RECEIVED
.
На вкладке Network
в Chrome DeveloperTools для receive.php
, (тип: xhr
) отображается следующее:
Queueing: 2.08ms
Stalled: 0.62ms
Request sent: 894ms
Waiting (TTFB): 41.27s
Content Download: 0.69ms
PS
версия PHP: 7.1.33
Apache / NGINX-htaccess-support
FreeBSD 11.3-RELEASE-p3