Probleem
ColumnBuilder roept defineFields() aan bij elke datatable AJAX request om de kolomdefinities op te bouwen. Field-definities zijn deterministisch en veranderen niet tussen requests.
Impact: alle Field-objecten worden bij elke request opnieuw geïnstantieerd (~23 fields × N resources). Onnodige object-instantiatie en eventuele trait-initialisatie.
Fix
Eenvoudige in-memory cache per resource-class:
private static array \$columnCache = [];
public function build(string \$resourceClass): array
{
return self::\$columnCache[\$resourceClass] ??= \$this->doBuild(\$resourceClass);
}
Cache is per process, geen invalidatie nodig — kolomdefinities zijn statisch tot deploy.
Acceptatiecriteria
Probleem
ColumnBuilderroeptdefineFields()aan bij elke datatable AJAX request om de kolomdefinities op te bouwen. Field-definities zijn deterministisch en veranderen niet tussen requests.Impact: alle Field-objecten worden bij elke request opnieuw geïnstantieerd (~23 fields × N resources). Onnodige object-instantiatie en eventuele trait-initialisatie.
Fix
Eenvoudige in-memory cache per resource-class:
Cache is per process, geen invalidatie nodig — kolomdefinities zijn statisch tot deploy.
Acceptatiecriteria
build()call met zelfde resource roeptdefineFields()niet opnieuw aan