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 или нет, и только отправил заголовки, когда это так.

1 ответ

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

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

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