"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Mejora del rendimiento del sitio web con Intersection Observer

Mejora del rendimiento del sitio web con Intersection Observer

Publicado el 2024-07-30
Navegar:634

Enhancing Website Performance with Intersection Observer

Introducción

En la búsqueda de una experiencia web más rápida y eficiente, los desarrolladores buscan continuamente nuevas formas de optimizar el rendimiento. Una herramienta poderosa en el arsenal del desarrollador web es la API Intersection Observer. Esta API le permite observar cambios en la visibilidad de los elementos de destino, lo que permite estrategias avanzadas como carga diferida y carga de contenido diferida. En este blog, exploraremos cómo utilizar la API de Intersection Observer para mejorar el rendimiento de su sitio web.

¿Qué es el observador de intersecciones?

La API Intersection Observer proporciona una forma de observar de forma asincrónica los cambios en la intersección de un elemento de destino con un elemento ancestro o con la ventana gráfica del documento de nivel superior. Esto puede resultar especialmente útil para la carga diferida de imágenes u otro contenido a medida que los usuarios se desplazan hacia abajo en la página.

Casos de uso clave para mejorar el rendimiento

  1. Carga diferida de imágenes e iframes: carga imágenes e iframes solo cuando están a punto de ingresar a la ventana gráfica, lo que reduce el tiempo de carga inicial.
  2. Carga diferida de contenido fuera de la pantalla: difiere la carga de contenido como anuncios, videos o guiones pesados ​​hasta que estén visibles.
  3. Desplazamiento infinito: carga más contenido a medida que el usuario se desplaza hacia abajo en la página.
  4. Seguimiento de análisis: realiza un seguimiento cuando los elementos aparecen a la vista para realizar análisis de participación del usuario.

Uso básico

Profundicemos en una implementación básica de la API de Intersection Observer.

  1. Crear un observador de intersección

Primero, crea una instancia de IntersectionObserver:

let observer = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // Perform actions when the element is visible
      entry.target.src = entry.target.dataset.src;
      observer.unobserve(entry.target); // Stop observing after loading
    }
  });
}, {
  root: null, // relative to document viewport
  rootMargin: '0px', // margin around root
  threshold: 0.1 // visible amount of item shown in relation to root
});
  1. Elementos objetivo para observación

Selecciona los elementos que deseas observar y comienza a observarlos:

document.querySelectorAll('img[data-src]').forEach(img => {
  observer.observe(img);
});
  1. Estructura HTML para carga diferida

Asegúrese de que su estructura HTML admita la carga diferida mediante el uso de atributos de datos:

Lazy Loaded Image

Configuraciones avanzadas

Para tener más control, puedes ajustar las opciones de margen raíz y umbral:

  1. Margen raíz: precarga el contenido ligeramente antes de que ingrese a la ventana gráfica.
rootMargin: '100px' // preload 100px before entering viewport
  1. Umbral: determina qué parte del elemento debe ser visible antes de activar la devolución de llamada.
threshold: [0.25, 0.5, 0.75, 1] // trigger at 25%, 50%, 75%, and 100% visibility

Ejemplo práctico: carga diferida de imágenes

Aquí hay un ejemplo completo para cargar imágenes de forma diferida:

  1. Código JavaScript
document.addEventListener("DOMContentLoaded", function() {
  let lazyImages = document.querySelectorAll("img.lazy");

  let imageObserver = new IntersectionObserver((entries, observer) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        let img = entry.target;
        img.src = img.dataset.src;
        img.classList.remove("lazy");
        observer.unobserve(img);
      }
    });
  });

  lazyImages.forEach(image => {
    imageObserver.observe(image);
  });
});
  1. Estructura HTML
Lazy Loaded Image

Beneficios

  1. Tiempo de carga inicial reducido: al cargar solo las imágenes y el contenido que están en la ventana gráfica o cerca de ella, se reduce el tiempo de carga inicial.
  2. Rendimiento de desplazamiento mejorado: aplazar la carga de contenido fuera de la pantalla puede generar un desplazamiento más fluido.
  3. Mejor experiencia de usuario: los usuarios solo descargan el contenido que están a punto de ver, lo que genera una experiencia más receptiva.

Conclusión

Al implementar la API de Intersection Observer, puede mejorar significativamente el rendimiento y la experiencia del usuario de su sitio web. Ya sea que esté cargando imágenes de forma diferida, aplazando la carga de scripts pesados ​​o implementando un desplazamiento infinito, esta API proporciona una forma sólida y eficiente de administrar la visibilidad del contenido. ¡Empiece a utilizar Intersection Observer hoy y vea la diferencia en el rendimiento de su sitio web!

Declaración de liberación Este artículo se reproduce en: https://dev.to/koolkamalkishor/enhancing-website-performance-with-intersection-observer-f89?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3