2014-04-13 104 views
0

我有一個貓鼬服務器,命令可以用AJAX調用。如果我在不從貓鼬發送HTTP頭的情況下調用CORS錯誤(但使用瀏覽器訪問地址就可以),但是當我發送頭文件時,可能需要一分鐘才能得到響應(但它工作),無論是與AJAX和瀏覽器。我的回覆代碼:Mongoose Web服務器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頭與正確的身體長度,或者
  • 或者,使用mg_send_header()mg_printf_data()功能,在這種情況下,你不需要用Content-Length原因這些打擾函數使用分塊編碼。
+0

我懷疑這是原因,貓鼬不關心Content-Length,因爲它使用分塊編碼。我假設他忘記從處理程序返回TRUE,使得貓鼬等待更多的數據,直到寫完爲止,超時。 – Lothar