【问题标题】:Cache HTML using request-promise and Node.js使用 request-promise 和 Node.js 缓存 HTML
【发布时间】:2016-02-12 00:34:11
【问题描述】:

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

我过去这样做的方式是指定一个time-to-live 说某一天。然后我将传递给请求的参数并对它们进行哈希处理。然后,每当发出请求时,我都会将文件系统上的 HTML 内容保存在特定文件夹中,并将文件命名为 hashunix 时间戳的名称。然后,当使用相同的参数发出请求时,我会通过时间戳检查缓存是否仍然相关,并拉取它或发出新请求。

是否有任何库可以帮助解决这个请求? request 是否有本机执行此操作的方法?

【问题讨论】:

  • 您是否有理由不使用支持生存时间的键值存储,例如 RedisMemcached?似乎您可以节省大量文件系统操作,而密钥可能只是您的哈希值。
  • @YetAnotherUserName 您是否建议将整个 HTML 页面放入 redis 并将密钥设置为哈希?

标签: javascript node.js http caching request


【解决方案1】:

我在 cmets 中使用了 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
}

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多