2013-10-07 28 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你说我可以流到它。 –