2014-04-13 2 views
0

나는 AJAX로 호출 가능한 명령과 함께 몽구스 서버를 가지고있다. mongoose에서 HTTP 헤더를 보내지 않고 CORS 오류가 발생하지만 (브라우저에서 주소를 방문하면 문제가 없습니다) 헤더를 보내면 응답을 받기 전에 최대 1 분이 걸릴 수 있습니다 (단,) AJAX와 브라우저 모두에서 작동합니다. 내 응답 코드 :몽구스 웹 서버 HTTP 헤더가 매우 느림

//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 헤더, 또는 다른 방법으로
  • 추가하기 Content-Length 원인이 귀찮게 할 필요가 없습니다이 경우 mg_send_header()mg_printf_data() 기능을 사용 함수는 청크 분할 인코딩을 사용합니다.
+0

이것이 이유라고 생각하지 않습니다. 몽구스는 청크 인코딩을 사용하므로 Content-Length는 신경 쓰지 않습니다. 나는 그가 당신이 썼을 때까지 몽구스가 더 많은 데이터를 기다릴 때 핸들러로부터 TRUE를 리턴하는 것을 잊어 버렸다고 가정한다. – Lothar