2015-11-10 27 views
0

我正在寻找一种简单的方法来缓存我使用request-promise库提取的HTML。使用request-promise和Node.js缓存HTML

我过去这样做的方式是指定一个time-to-live说有一天。然后我将参数传递给请求,并将它们散列。然后,无论何时提出请求,我都会将文件系统上的HTML内容保存在特定文件夹中,并将该文件命名为hashunix时间戳。然后,当请求使用相同的参数时,我会检查缓存是否仍然通过时间戳相关并将其拉出或发出新请求。

是否有任何库可以帮助这个可以包装请求?请求是否有一种方法可以在本地执行此操作?

+0

有没有你不使用支持生存时间的关键值存储,说[Redis的(http://redis.io/commands/expire)或原因[Memcached的(HTTP:/ /docs.libmemcached.org/memcached_set.html)?似乎你可以节省大量的文件系统操作,并且密钥可能只是你的散列。 –

+0

@YetAnotherUserName你是否建议将整个HTML页面放到redis中并将密钥设置为散列? – ThomasReggi

回答

0

我和recco一起在评论中使用了Redis。请注意,这仅适用于获取请求。

/* cached requests */ 
async function cacheRequest(options){ 
    let stringOptions = JSON.stringify(options) 
    let optionsHashed = crypto.createHash('md5').update(stringOptions).digest('hex') 
    let get = await client.getAsync(optionsHashed) 
    if (get) return get 
    let HTML = await request.get(options) 
    await client.setAsync(optionsHashed, HTML) 
    return HTML 
}