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
потому что эти функции используют чанкованное кодирование.