Oft kann es passieren, dass die Verknüpfungen zwischen den Models große Listen mit sich ziehen. Dadurch kann der Aufruf in der Listenansicht sehr langsam werden. Mit LazyLoading kann dies optimiert werden.
1. LazyLoading für ObjectStorage im Model nutzen
Mit dieser kleinen Anpassung kann sehr gut die Ladegeschwindigkeit optimieren.
<?php
declare(strict_types=1);
namespace LdoerrDotCom\MyExt\Domain\Model;
use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;
class MyModel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
#[Lazy()]
/**
* @var ObjectStorage<\LdoerrDotCom\MyExt\Domain\Model\Value>
* @lazy
*/
protected $value;
}
Der Vorteil ist, dass Model\Value Daten jetzt nur geladen werden, wenn sie benötigt werden.
2. TCA Listen standardmäßig zugeklappt anzeigen lassen
Eine weitere Anpassung ist die Änderung des Aufklappverhaltens von TCA Listen. Hier können wir z.B. für Value alle Value Listenelemente standardmäßig zuklappen. Dadurch werden die Daten erst beim Aufklappen geladen:
'valuelist' => [
'exclude' => false,
'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_property.tx_myext_values',
'description' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_property.tx_myext_values.description',
'config' => [
'type' => 'inline',
'foreign_table' => 'tx_myext_domain_model_value',
'foreign_field' => 'property',
'maxitems' => 9999,
'appearance' => [
'collapseAll' => 1, //Hier wird alles standardmäßig eingeklappt
'levelLinksPosition' => 'top',
],
],
],