Bug #21342
closedImprove TCEforms Suggest
0%
Description
As described in 00011979, TCEforms suggest tends to be slow for larger sites. This mainly results from the search strategy used by the current implementation. It first fetches all pids the user may access (if a pid limit is set) and then greedily searches for records matching the query until the neccessary 10 records are found or a recursion limit is met.
The problem here is that for large sites many records are not accessible for a user, so there may be so many unaccessible records that the recursion limit is met before enough records are collected.
The solution is to change TCEforms suggest to support different search strategies. This makes it possible to use a strategy first selecting the pages that contain records from the target table and are accessible by the user and then searching these pages for matching records. This effectively excludes all records that do not match because of access restrictions.
The second part of this RFC is the implementation of a caching strategy for the various expensive and repetitive computations. This especially includes the pid lists, as they can't be collected efficiently due to the way the tree structure of the TYPO3 page tree is stored inside the database. This information will be cached for a short time (a few minutes) and on a per-user basis, so the first query of a user will be approximately as slow as before, but subsequent requests are a lot faster.
(issue imported from #M12318)