Maison  >  Article  >  interface Web  >  La clé de la performance des pages : optimiser le front-end pour éviter les redessins et les redistributions de pages

La clé de la performance des pages : optimiser le front-end pour éviter les redessins et les redistributions de pages

WBOY
WBOYoriginal
2024-01-26 09:30:07928parcourir

La clé de la performance des pages : optimiser le front-end pour éviter les redessins et les redistributions de pages

Essentiel pour l'optimisation front-end : comment éviter efficacement le redessinage et la redistribution des pages nécessite des exemples de code spécifiques

Avec le développement rapide d'Internet, le développement front-end est devenu de plus en plus important dans l'optimisation des performances des pages Web. Parmi eux, éviter les redessins et les redistributions de pages est un facteur clé pour améliorer les performances des pages Web. Cet article présentera quelques méthodes efficaces et des exemples de code spécifiques pour aider les développeurs front-end à réduire efficacement les redessins et les redistributions de pages et à améliorer l'expérience utilisateur.

1. Causes et effets du redessinage et de la redistribution des pages

  1. Redessinage des pages : signifie que lorsque le style d'un élément change, le navigateur doit redessiner une partie ou la totalité du contenu de l'élément. Par exemple, lorsque les attributs de style tels que la couleur et l'arrière-plan d'un élément sont modifiés, l'élément sera redessiné.
  2. Reflow de la page : signifie que lorsque la mise en page et les attributs géométriques changent, le navigateur doit recalculer la mise en page et les attributs géométriques des éléments, puis mettre à jour les résultats de rendu de la page. Par exemple, lorsque la taille, la position et d'autres attributs d'un élément sont modifiés, la redistribution de l'élément et de ses éléments ancêtres sera déclenchée.

Le redessinage et la redistribution entraîneront le recalcul et le rendu de la page par le navigateur, consommant des ressources informatiques et du temps supplémentaires, affectant ainsi les performances et la vitesse de réponse de la page. Surtout sur les appareils mobiles, cette perte de performances est encore plus importante.

2. Méthodes pour éviter le redessinage et la redistribution des pages

  1. Utilisez le DOM virtuel : Le DOM virtuel peut éviter le redessinage et la redistribution fréquents des pages. Il fonctionne en enregistrant les éléments et l'état de la page en mémoire, puis en mettant à jour uniquement les parties modifiées et enfin en restituant les parties modifiées sur la page. Il peut être implémenté à l'aide du mécanisme DOM virtuel fourni par les frameworks front-end tels que React et Vue.
  2. Opération DOM par lots : réduisez le nombre d'opérations directes sur DOM et essayez d'effectuer des opérations DOM par lots. Lorsque vous devez modifier le style d'un élément plusieurs fois, vous pouvez modifier les styles de plusieurs éléments à la fois en ajoutant ou en supprimant des classes.

    // 错误示例:多次修改元素样式
    element.style.width = '100px';
    element.style.height = '200px';
    element.style.backgroundColor = 'red';
    
    // 正确示例:一次性修改元素样式
    element.classList.add('modified');
  3. Évitez la synchronisation forcée de la mise en page : pour les opérations qui nécessitent d'obtenir des informations sur la disposition des éléments, telles que offsetWidth, offsetHeight, etc., le nombre d'appels doit être minimisé. Si vous devez obtenir plusieurs fois des informations sur la disposition des éléments, vous pouvez d'abord les enregistrer dans une variable, puis les réutiliser.

    // 错误示例:多次获取元素布局信息
    for (let i = 0; i < elements.length; i++) {
     console.log(elements[i].offsetWidth);
     console.log(elements[i].offsetHeight);
    }
    
    // 正确示例:一次获取元素布局信息
    for (let i = 0; i < elements.length; i++) {
     const width = elements[i].offsetWidth;
     const height = elements[i].offsetHeight;
     console.log(width);
     console.log(height);
    }
  4. Utiliser l'optimisation de l'animation : lorsque vous devez utiliser des effets d'animation, évitez de modifier directement les attributs de style de l'élément, essayez d'utiliser l'animation CSS ou utilisez la méthode requestAnimationFrame pour l'optimisation. L'animation CSS peut utiliser l'attribut transform pour obtenir des effets d'animation tels que le déplacement et la mise à l'échelle sans déclencher la redistribution des pages.

    /* CSS动画示例 */
    .box {
     transition: transform 1s;
    }
    
    .box:hover {
     transform: translateX(100px);
    }
    /* requestAnimationFrame示例 */
    function animate() {
     element.style.transform = `translateX(${x}px)`;
    
     if (x < targetX) {
     requestAnimationFrame(animate);
     }
    }
    
    animate();
  5. Utiliser des fragments de document : lorsque vous devez générer dynamiquement plusieurs nœuds DOM, vous pouvez utiliser des fragments de document (DocumentFragment) pour améliorer les performances. Un fragment de document est un conteneur DOM virtuel, qui peut être utilisé pour ajouter plusieurs nœuds DOM directement au document, réduisant ainsi les opérations de redistribution multiples.

    // 错误示例:逐个添加DOM节点
    for (let i = 0; i < data.length; i++) {
     const item = document.createElement('li');
     item.textContent = data[i];
     list.appendChild(item);
    }
    
    // 正确示例:使用文档片段添加DOM节点
    const fragment = document.createDocumentFragment();
    
    for (let i = 0; i < data.length; i++) {
     const item = document.createElement('li');
     item.textContent = data[i];
     fragment.appendChild(item);
    }
    
    list.appendChild(fragment);

3. Résumé

Cet article présente plusieurs méthodes pour éviter le redessinage et la redistribution des pages, et fournit des exemples de code spécifiques. En utilisant correctement ces méthodes, les développeurs front-end peuvent réduire efficacement les redessins et les redistributions de pages, améliorer les performances des pages Web et offrir une meilleure expérience utilisateur. Dans le développement réel, les développeurs peuvent également optimiser en fonction de scénarios spécifiques pour améliorer encore les performances des pages Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn