Zuerst die aktuellen Zustand: Es gibt eine ZF2-Anwendung mit einem Formular. Das Formular enthält einige Autovervollständigungsfelder (implementiert auf der Frontend-Seite mit jQuery Autocomplete).Wie wird das serverseitige Caching für die automatische Vervollständigung in einer ZF2-Anwendung realisiert?
Die SQL-Anweisungen dahinter wie folgt aussehen:
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)
Natürlich führt es zu dem Problem , dass die Datenbank von vielen kleinen Anfragen zur automatischen Vervollständigung terrorisiert wird. Caching sollte helfen - und ich habe bereits damit begonnen, einen Zend\Cache\Storage\Adapter\Apcu
-basierten Caching-Mechanismus zu implementieren. Aber dann sah ich das nächste Problem: Mit einem gemeinsamen Cache wie APCu kann ich die Ergebnisse nicht dynamisch filtern. Ein solcher Cache scheint also für einen Fall mit Autocomplete nicht zu funktionieren.
Ich bin mir ziemlich sicher, dass es ein häufiges Problem ist und es bereits eine Lösung dafür gibt.
Wie realisiert man einen Caching-Mechanismus in einer ZF2-Anwendung für die Autocomplete-Funktionalität?