У меня есть сервер Мангуста, с командами, вызываемыми с помощью AJAX. Я получаю сообщение об ошибке CORS, если вызываю его, не отправляя заголовки HTTP из mongoose (но посещение адреса с помощью браузера работает нормально), но когда я отправляю заголовки, может пройти до минуты, прежде чем я получу ответ (но это работает), как с AJAX, так и с браузером. Мой код ответа:
//without headers
mg_printf(conn,reply.c_str());
//with headers
mg_printf(conn,"HTTP/1.1 200 OK\r\n""Content-Type: text/plain\n""Cache-Control: no-cache\n""Access-Control-Allow-Origin: *\n\n""%s\n", reply.c_str());
Как я могу ускорить это? Я неправильно отправляю свои заголовки?
Хорошо, я нашел решение, оно работает, если я сначала проверяю, является ли запрос вызовом API или нет, и отправляю заголовки только тогда, когда это так.
Причина, по которой мангуст медленный, заключается в том, что он ожидает остальной контент до истечения времени ожидания. И причина, по которой он ждет, заключается в том, что вы не устанавливаете Content-Length, и в этом случае маркер «конца контента» — это когда соединение закрывается.
Итак, правильное решение:
Content-Length
заголовок с правильной длиной тела, ИЛИmg_send_header()
а также mg_printf_data()
функции, в этом случае вам не нужно беспокоиться с Content-Length
потому что эти функции используют чанкованное кодирование.Других решений пока нет …