HTTP заголовки веб-сервера Mongoose чрезвычайно медленные

У меня есть сервер Мангуста, с командами, вызываемыми с помощью 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 или нет, и отправляю заголовки только тогда, когда это так.

0

Решение

Причина, по которой мангуст медленный, заключается в том, что он ожидает остальной контент до истечения времени ожидания. И причина, по которой он ждет, заключается в том, что вы не устанавливаете Content-Length, и в этом случае маркер «конца контента» — это когда соединение закрывается.

Итак, правильное решение:

  • добавлять Content-Length заголовок с правильной длиной тела, ИЛИ
  • В качестве альтернативы используйте mg_send_header() а также mg_printf_data() функции, в этом случае вам не нужно беспокоиться с Content-Length потому что эти функции используют чанкованное кодирование.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]