首先是实际状态:有一个带有表格的 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 应用程序中实现自动完成功能的缓存机制?