[TYPO3-core] RFC #12318: Improve TCEforms Suggest

Andreas Wolf typo3ml at andreaswolf.info
Mon Nov 9 16:46:54 CET 2009


This is an SVN patch request.

Type: Bugfix


Bugtracker references:
http://bugs.typo3.org/view.php?id=12318


Branches:
trunk


Problem:

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.


Solution:

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.


Notes:

This RFC does not contain an important fix proposed by Steffen Gebert:
He suggested to exponentially increase the number of fetched records if
none are found. As this will only apply to the greedy selector, it will
be a separate RFC. This RFC is mainly about refactoring the suggest
feature to support different search strategies and some poor man's MVC
(separate the output from the selector).


Regards
Andreas
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0012318_v1.diff
URL: <http://lists.typo3.org/pipermail/typo3-team-core/attachments/20091109/eeab18ff/attachment.txt>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 258 bytes
Desc: OpenPGP digital signature
URL: <http://lists.typo3.org/pipermail/typo3-team-core/attachments/20091109/eeab18ff/attachment-0001.pgp>


More information about the TYPO3-team-core mailing list