2

Hack には、<<__Memoize>>メソッドの結果を簡単にキャッシュする属性があります。

データベースまたは API リクエストの結果を限られた時間キャッシュするためにどのように使用できますか?

私のコードが非常に頻繁にデータベースからの情報を必要とするとしましょう:

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

パフォーマンスを向上させるために、結果を 1 分間キャッシュしたいと考えています。

データが変更された場合、私のプログラムは 1 分以内にそれを確認する必要があります。結果が 1 分間古くなっても問題ありません。

公式ドキュメントを確認しました。

4

2 に答える 2

3

<<__Memoize>>リクエストの存続期間中のみキャッシュし、リクエスト間で共有されません。HTTP リクエストが 1 分以上続くことはほとんどないため、複数のリクエスト間で共有されるキャッシュが必要なようです。APC は一般的にそのために使用されます ( http://php.net/apcを参照)。リクエスト内でキャッシュをより細かく制御したい場合は、静的メンバーまたはグローバル変数を使用して独自にロールする必要があります。

于 2016-07-06T15:44:22.670 に答える