2013-10-07 50 views
0

我在玩node.js.使用http-proxy,我想創建一個簡單的Web代理,它在發回請求之前發出請求,然後在某處存儲響應。如果我然後發現沒有互聯網連接或某個地方設置了某個標誌,我想重播我藏起來的迴應。所以URL是「關鍵」,整個迴應將是「價值」。堅持/緩存Web響應的最簡單方法

我的問題是,什麼是序列化這個響應對象,以便它可以稍後重播的最簡單的方法是什麼?我在看mongodb和mongoosejs,但因爲貓鼬需要爲我的對象創建一個模式,我只想將整個響應對象轉儲到某個地方(將URL作爲關鍵字),所以我推遲了。有更容易的方法嗎?

這裏是我的超級簡單的node.js代理代碼:

var httpProxy = require('http-proxy'); 

var server = httpProxy.createServer(function (req, res, proxy) { 

    var buffer = httpProxy.buffer(req); 

    proxy.proxyRequest(req, res, { 
    host: 'url.to.proxy.com', 
    port: 80, 
    buffer: buffer 
    }); 
}); 

server.proxy.on('end', function (req) { 
    console.log("The request was proxied.",req.url); 
}); 

server.listen(8000); 
+0

MongoDB希望你創建一個模式?這聽起來不對。 –

+0

貓鼬做 - http://mongoosejs.com/docs/index.html –

+1

然後不要使用貓鼬,只要堅持使用MongoDB。 –

回答

2

最簡單的方法是存儲在一個文件中的響應對象;你不需要數據庫。

  1. 創建響應對象緩存目錄。
  2. 使用SHA-256哈希URL並將結果用作文件名。
  3. 將響應對象流式傳輸到文件。
+0

不錯,比用mongodb搞亂簡單得多,'cos你說我可以流到它。 –