Skip to content

MODEL - Problème de performance #37

@Rahe

Description

@Rahe

Dans le Model de base, nous avons un problème de performances sur la méthode get_fields.
En effet on va chercher autant de fois la totalité des champs ACF pour chaque nouvel objet instancié et qui fait un get_field.

Si nous avons 5 objets du même CPT sur la page avec get_meta, ils feront tous appel 1 fois à get_fields appelant acf_get_field_groups et acf_get_fields, ce qui nous fera 5 appels à toutes ces méthodes.

Clairement ces opérations ne sont pas nécessaires, une fois les fields du CPT récupérés ils ne changeront pas dans le runtime.

Plusieurs approches possibles :

  1. Stocker en static tous les champs, avec un index par CPT

Rapide et efficace, pas de dépendance supplémentaire

  1. Avoir une classe dédiée à part, elle se charge de gérer le cache à l'endroit qui lui plait, cache objet, static dans la classe etc.

On pourrait l'utiliser à d'autres endroits pour le model user aussi par exemple

Après tests de mon côté, sur une page avec 405 appels à get_fields, on peut gagner 230ms et 1.76 MB de RAM sur une seule requête.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions