まずは実態:フォーム付きのZF2アプリがあります。フォームにはいくつかのオートコンプリート フィールドが含まれています ( jQuery Autocompleteを使用してフロントエンド側に実装されています)。
その背後にある SQL ステートメントは次のようになります。
SELECT name FROM countries WHERE countries.name LIKE %en%
-> should find "Arg[en]tina", "Arm[en]ia", "B[en]in", "Turkm[en]istan" etc.
or
SELECT name FROM countries WHERE countries.continent_id = 2
-> should find "Afghanistan", "Armenia", "Azerbaijan" etc. (2 = Asia)
or
SELECT name FROM countries WHERE countries.continent_id = 2 AND countries.name LIKE %en%
-> should find "Arm[en]ia", "Turkm[en]istan" etc. (2 = Asia)
もちろん、それはデータベースが多数の小さなオートコンプリート リクエストによって恐怖に陥るという問題につながります。キャッシングが役立つはずです。私はすでに にZend\Cache\Storage\Adapter\Apcu
基づくキャッシング メカニズムの実装を開始しています。しかし、次の問題が発生しました。APCuのような一般的なキャッシュを使用すると、結果を動的にフィルター処理できません。したがって、このようなキャッシュは、オートコンプリートの場合には機能しないようです。
これは一般的な問題であり、すでに解決策があると確信しています。
オートコンプリート機能のために ZF2 アプリケーションでキャッシュメカニズムを実現する方法は?