Hack语言中的Memoize属性——缓存超时

Memoize attribute in the Hack language - cache timeout

Hack 具有 <<__Memoize>> 属性可以轻松缓存方法结果。

我如何使用它来缓存某些数据库的结果或API请求有限的时间

假设我的代码经常需要来自数据库的一些信息:

public function loadEmployees(
  string $company_name,
): ImmSet<string> {
  return $this->db->sqlQuery(...);
}

为了提高性能,我想将结果缓存一分钟。

如果数据发生变化,我的程序应该会在一分钟内看到。我对结果过时一分钟没意见。

检查了official docs

Memoize 仅存在于请求的上下文中。您的请求需要超过一分钟?如果是这种情况,Memoize 不适合您的用例。

<<__Memoize>> 只缓存请求的生命周期,不在请求之间共享。您的 HTTP 请求不太可能持续超过一分钟,因此听起来您想要一个在多个请求之间共享的缓存。 APC 通常用于此(参见 http://php.net/apc)。如果您真的想要在请求中更精细地控制缓存,您将需要使用静态成员或全局变量来滚动自己的缓存。