2

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

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

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

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

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

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

检查了官方文档

4

2 回答 2

3

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

于 2016-07-06T15:43:05.010 回答
3

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

于 2016-07-06T15:44:22.670 回答