Existe-t-il une alternative plus performante que la substitution de fichiers de modèle?

8

Je dois me débarrasser de beaucoup de balisage inutile dans une vue. En général, j'accomplis cela en remplaçant les fichiers de modèle dans mon thème, mais cette fois, la vue est vraiment énorme et les performances diminuent. Je me suis donc demandé s'il existait un moyen plus performant de réduire le balisage? Lors de la modification du balisage d'un nœud, les fonctions de prétraitement étant plus rapides que la substitution des fichiers de modèle, existe-t-il un mécanisme analogique pour les vues?

Edit 1: Bien sûr, la raison de la faible performance n'est pas le remplacement des fichiers de modèle en premier lieu, mais si je peux optimiser un peu là-bas, je devrai le faire. De plus, j'ai régulièrement des ennuis en désactivant le balisage dans l'interface utilisateur elle-même: la désactivation des styles de ligne par exemple est ignorée lorsque j'utilise un sous- thème Omega

Edit 2: Je connais les possibilités à l'intérieur de l' interface utilisateur des vues ; Ce que je recherche, c'est une méthode manuelle avec un contrôle fin.

Madame Adam
la source
3
Qu'est-ce qui vous fait penser que le remplacement des fichiers de modèle est à l'origine de la baisse des performances? Ne pas dire que ce n'est pas nécessairement, mais il semble que ce serait peu probable. À moins que vous ne supprimiez pas simplement le balisage, mais que vous changiez également la logique. Peut-être pouvez-vous modifier la question et fournir un peu plus de contexte? Des détails plus spécifiques sur la vue et le (s) fichier (s) de modèle?
Clive
Ajout de quelques détails ci-dessus.
Madame Adam
Ralentissement des performances même avec la mise en cache activée? (Cache des vues + Cache de la page Anon + Memcache (peut-être) + Vernis (peut-être))
Beebee

Réponses:

8

Vous pouvez éliminer le balisage inutile via l'interface utilisateur des vues.

Lorsque vous ajoutez un champ, masqué sous Paramètres de style, ils ont toujours cette coche inutile par défaut

entrez la description de l'image ici

De plus, vous pouvez supprimer plus de balisage ici

entrez la description de l'image ici

et ici

entrez la description de l'image ici

Pas de sueur
la source
Merci pour votre réponse, mais je suis conscient des possibilités à l'intérieur des vues ui; ce que je recherche, c'est une méthode manuelle avec un contrôle fin.
Madame Adam
7

Il est parfois plus performant avec View d'afficher du contenu au lieu de champs. Ceci est mieux exploité avec les modes d'affichage personnalisés, où vous configurez le mode d'affichage pour afficher les champs que vous souhaitez. Vous pouvez ensuite afficher ce mode d'affichage comme vous le souhaitez via des modèles et des formateurs. Cela a tendance à bien fonctionner lorsque vous avez Entitycache .

Cela dit, tous les systèmes sont différents. Le vrai profilage est vraiment le meilleur moyen de déterminer ce qui prend du temps. Personnellement, je ne pense pas que le balisage des vues ajoute un temps significatif à l'exécution.

mpdonadio
la source
Approche intéressante - je profilerai cela.
Madame Adam
7

la raison de la faible performance n'est pas le remplacement des fichiers de modèle en premier lieu, mais si je peux optimiser un peu là-bas, je devrai le faire

On dirait que vous êtes encouragé à optimiser prématurément. Si la vue souffre de problèmes de performances, assurez-vous que la mise en cache est activée sur la vue pour éviter de rendre le HTML à partir de zéro autant que possible. Cela augmentera considérablement les performances par rapport à presque toute réduction du nombre de fichiers impliqués dans le processus de rendu.

Une fois que le registre des thèmes est construit, avoir beaucoup de modèles remplacés ne devrait pas être un impact notable sur les performances par rapport à l'utilisation des valeurs par défaut car Drupal charge toujours un nombre similaire de fichiers (j'ai vu une exception à cela si vous créez un fichier pour chaque possible remplacer dans toute la chaîne, alors ne le faites pas).

Si vous passez à un affichage d'entité au lieu d'un affichage de champ, vous pourrez peut- être réduire le nombre de modèles chargés et donc obtenir une amélioration mineure de la vitesse de rendu. Cela suppose que l'affichage de l'entité prend également des mesures pour éviter les modèles au niveau du champ et / ou est probablement déjà mis en cache ailleurs. Cela représenterait probablement beaucoup de travail humain coûteux pour très peu d'amélioration des performances de la machine.

acrosman
la source
2
D'accord, maintenant tout le mécanisme devient plus clair pour moi. En fin de compte, les commentaires et réponses ici ont tendance à dire que c'est un effort erroné et disproportionné pour éviter les remplacements de modèle afin d'accélérer les performances. Je vous remercie!
Madame Adam