3

我們使用node-postgrespg上NPM)爲我們的應用程序,但都遇到問題,所以我們決定回到例子 Wiki上:爲什麼Node.js Postgres Wiki示例爲每個http請求插入多個記錄?

https://github.com/brianc/node-postgres/wiki/Example

當我們運行示例,每個http請求插入兩個記錄到Postgres(「訪問」)表中。 這是所需的行爲...?

我們發佈的示例代碼來的Heroku:https://node-postgres-example.herokuapp.com
注:使用谷歌瀏覽器訪問)

注:我們從維基做3名更改server.js代碼,使其在Heroku上運行,這是在GitHub上:https://github.com/dwyl/postgres-connection-pool-test

我們對server.js所做的更改純粹是爲了(1)創建visit表,如果它尚不存在,(2)從process.env.DATABSE_URL獲得postgres連接字符串,(3)在Heroku上收聽process.env.PORT。所有其餘的代碼是根據Wiki示例

+0

實現HTTP服務時,檢查請求數是人們首先想到的。 –

+0

@ vitaly-t同意。謝謝。 – nelsonic

回答

0

您的客戶(瀏覽器)似乎提出兩個請求。如果您使用curl在命令行中,例如像宣傳的那樣,並返回一個連續訪問計數器:

→ curl -i https://node-postgres-example.herokuapp.com/ 
HTTP/1.1 200 OK 
Server: Cowboy 
Connection: keep-alive 
Content-Type: text/plain 
Date: Sun, 13 Mar 2016 14:19:42 GMT 
Transfer-Encoding: chunked 
Via: 1.1 vegur 

You are visitor number 40 

→ curl -i https://node-postgres-example.herokuapp.com/ 
HTTP/1.1 200 OK 
Server: Cowboy 
Connection: keep-alive 
Content-Type: text/plain 
Date: Sun, 13 Mar 2016 14:20:00 GMT 
Transfer-Encoding: chunked 
Via: 1.1 vegur 

You are visitor number 41 
+0

你是對的,'curl'只會導致一個* single *插入訪問次數。所以這*可能會成爲一個瀏覽器問題......但有問題的瀏覽器是谷歌瀏覽器......所以我們需要深入瞭解它。選中的Safari和Firefox具有所需的行爲。 – nelsonic

+0

我想你是「請求」與「訪問」混淆。 – okket

+0

這不是我的代碼。我只是試圖運行示例代碼,並看到這個問題。謝謝。你已經幫助我們解決了問題的根本。 – nelsonic

-1

第二個請求幾乎肯定請求/favicon.ico這是一個反常現象在網絡技術的瀏覽器堆棧中,它是瀏覽器在某些包含HTML文檔中沒有明確引用的情況下隱含的請求。如果您單獨處理收藏夾圖標請求(可能使用express-favicon),則可以解決您的問題,並且每頁加載只會記錄1次訪問。

+0

請求!=訪問。一個請求就是這樣,就像一個請求favicon的瀏覽器一樣。如果你想計算訪問次數,你必須比計算請求更有趣。 (餅乾等) – okket

+0

@okket你在這裏沒有幫助。我明白HTTP請求是什麼,不是。我向OP解釋發生了什麼事。如果您發現發佈的答案不足,請發佈更好的答案,並讓社羣對他們進行投票。 –

+0

我不明白它是如何幫助OP的,如果你打電話請求「訪問」,向他展示一個解決方法,以便瀏覽器完全合法的請求並將其稱爲「異常」。 – okket

相關問題