Y aquí está el soporte del navegador para el preload. El siguiente paso es el prefetching. El prefetching es diferente de las otras sugerencias de recursos, ya que no intenta obtener algo crucial para la página actual. En cambio, intenta obtener fuentes no críticas que pueden ser útiles en el futuro cuando el usuario decida navegar a esa página.
Entonces aquí pueden ver, básicamente, cargaremos esta próxima página (CSS) cada vez que el usuario vaya a esa página. El navegador establece automáticamente los recursos de prefetching como baja prioridad para que no influyan en los recursos críticos necesarios para la página actual.
Antes de continuar, también hay diferentes tipos de prefetching, digamos, estrategias. Por lo tanto, puede verse influenciado por el usuario y también puede verse influenciado por si el mouse se queda en algún punto cerca de algún enlace. Luego, el navegador también puede obtener ese enlace específico. Y un caso de uso de esto es, por ejemplo, si estamos en una página de inicio de sesión, mientras el usuario está escribiendo su contraseña en el correo electrónico, podemos aprovechar este tiempo y ancho de banda para obtener los recursos necesarios para la página que viene después del inicio de sesión, y de esa manera, una vez que hagan clic en iniciar sesión, algunos de los recursos ya se habrán obtenido y la experiencia será más rápida. Aquí también está el soporte del navegador. Hasta donde he visto, solo Safari tiene algunos problemas con el prefetching, pero por lo demás es bastante bueno. Y luego tenemos el prerenderizado, que es el tipo de sugerencia de recursos más costoso, porque renderiza una página completa en segundo plano y si el usuario navega a esa página, será la más rápida, pero una advertencia es que puede desperdiciar innecesariamente ancho de banda y hacer que la experiencia sea más lenta, por lo que debes tener mucho cuidado con el prerenderizado. Aquí está el soporte del navegador, y una cosa que quiero mencionar, Chrome en realidad tiene este prefetch sin estado cuando usamos el prerenderizado en ese navegador, porque para minimizar la memoria, han hecho que un renderizador inicial se inicialice para recorrer los recursos y subrecursos y lo que básicamente significa es que cuando usamos el prerenderizado en Chrome, en realidad actúa más como un prefetch para ahorrar un poco de memoria.
Y la forma típica en que usamos estas sugerencias de recursos es colocándolas en una etiqueta de enlace en nuestra cabeza, en nuestro index.html o en algún otro lugar, pero es posible que se pregunten acerca de Vue. Entonces, Vue CLI y Vite tienen algún tipo de prefetching automáticamente para los fragmentos de código que se dividen por ellos. Pero otra forma en que podemos influir y hacer nuestras propias cosas es con una biblioteca genial que encontré, que es del equipo de unifiedjs y se llama unhead. Fue creado por Harlan Wilton, quien también es un destacado colaborador de código abierto de Vue. Básicamente, nos permite usar un hook componible llamado useHead, en el que luego podemos especificar enlaces, etiquetas meta y cualquier otra cosa que queramos tener en nuestra etiqueta head. Así que solo tenemos que instalarlo y luego les mostraré cómo podemos usarlo. Entonces, si vamos a VS Code, aquí tengo una aplicación Vue simple y como pueden ver, tengo dos páginas y aquí ya lo he instalado. Y estoy usando useHead para poder especificar un título y también podemos especificar enlaces. Así que aquí ya hemos especificado que tenemos un enlace a mi blog que queremos prefetchear. Y si vamos al sitio web aquí, pueden verlo si simplemente actualizo. Y aquí pueden ver que en realidad lo prefetchea y tiene la prioridad más baja. Eso significa que cada vez que haya un enlace a esa página y naveguemos a ella, se cargará más rápido. Una forma en que también puedo mostrar esto es yendo a los elementos y aquí pueden ver en la cabeza que se ha inyectado correctamente, por lo que se prefetchea y luego cualquier recurso que tengamos. Entonces, esa es una forma en que podemos influir en ello. Volviendo, también hay otra biblioteca que quería mencionar y es get.js, fue creada por el equipo de Angular y básicamente lo que hemos estado haciendo ahora es prefetching especulativo, por lo que basado en nuestra propia intuición decidimos qué recursos prefetchear, pero una mejor manera sería usar el prefetching predictivo. El prefetching predictivo se basa en datos, por lo que está impulsado por datos y obtenemos esos datos de Google Analytics. Basado en Google Analytics y el comportamiento del usuario al hacer clic en enlaces, la forma en que funciona es que crea una cadena de Markov y una cadena de Markov es básicamente un modelo que tiene la probabilidad de pasar de un estado a otro, pero lo que eso significa para el usuario es que, basado en los datos que tenemos, podemos prefetchear condicionalmente lo que es más probable que el usuario visite. Hasta donde sé, hay un módulo siguiente para get.js, pero también creo que necesita webpack, no estoy muy seguro y no he profundizado mucho, pero también pueden investigar por su cuenta y me encantaría saber si ya tienen experiencia con esta biblioteca en Vue.
En resumen, el rendimiento es un factor crítico para el éxito de cualquier aplicación web y hoy en día los usuarios tienen altas expectativas y no tolerarán aplicaciones lentas y poco ágiles. Por lo tanto, mediante el uso de técnicas de optimización del rendimiento, minimizando la latencia y el ancho de banda de la red y utilizando estas sugerencias de recursos, como el prefetching predictivo, podemos mejorar el rendimiento percibido de nuestro sitio web y brindar al usuario lo que necesita y una mejor experiencia de usuario. Gracias por escuchar, estaré, creo, en Discord esperando sus preguntas y mientras tanto, también pueden encontrarme en Twitter, pueden consultar mi blog en dev.to y también pueden seguirme en YouTube para ver más videos sobre Vue y Frontend. Gracias, ¡adiós!
Comments