Hack具有<<__Memoize>>
属性,可以轻松缓存方法结果。
如何在有限的时间内使用它来缓存某些数据库或API请求的结果?
假设我的代码经常需要来自数据库的一些信息:
public function loadEmployees(
string $company_name,
): ImmSet<string> {
return $this->db->sqlQuery(...);
}
为了提高性能,我想将结果缓存一分钟。
如果数据发生变化,我的程序应该在一分钟内看到它。结果陈旧一分钟我很好。
答案 0 :(得分:3)
&lt;&lt; __ Memoize&gt;&gt; 仅在请求的生命周期内缓存,并且不会在请求之间共享。您的HTTP请求持续时间超过一分钟的可能性极小,因此您需要一个跨多个请求共享的缓存。 APC通常用于此(见http://php.net/apc)。如果您真的希望在请求中更精细地控制缓存,则需要使用静态成员或全局变量来自行编写。
答案 1 :(得分:2)
Memoize仅存在于请求的上下文中。您的请求需要一分多钟?如果是这种情况,Memoize不适合您的使用案例。