Fernando Yutiz
😲😲😱😨🙀🙀
😂🤣
Juan Castro
ProfesorOh nooooooo me habeis hackeadoooooo
Cuando consumes una API REST con JavaScript, el navegador hace mucho trabajo silencioso por ti. Aprender a leer la pestaña Network del inspector te permite ver tiempos de carga, identificar qué recursos viajan por red y cuáles vienen del caché, y decidir dónde realmente vale la pena optimizar tu front-end.
Cómo preparo el proyecto Platzi Movies para inspeccionarlo
Antes de abrir cualquier herramienta, necesitas el proyecto corriendo localmente con tu propia API key.
El flujo es directo: clonas el repositorio desde la cuenta de Platzi en GitHub, entras a la carpeta y abres el editor con code -r ./ para reutilizar la ventana actual [01:30]. Al abrir el index.html en el navegador, vas a notar que el HTML carga, pero las películas y categorías no aparecen. Eso pasa porque The Movie DB exige una API key en cada consulta.
La solución sigue las instrucciones que dejaste en secrets.example.js:
secrets.js en la carpeta src.API_KEY con el token que obtienes en themoviedb.org/settings/api..gitignore para no exponer tu llave en GitHub [03:40].Con eso, al recargar, el scroll de tendencias del día, las categorías, el detalle de cada película y la búsqueda funcionan sin problema.
¿Por qué se ignora
secrets.jsen Git? Porque tu API key es privada. Subirla al repositorio público expone tu cuenta y permite que terceros consuman cuota a tu nombre.
Qué información me muestra la pestaña Network al cargar la app
La pestaña Network del DevTools registra cada recurso que tu HTML pide: CSS, fuentes de Google Fonts, imágenes, archivos JavaScript y, por supuesto, las llamadas fetch a la API [05:50].
Desde ahí puedes:
Al filtrar por fetch, ves exactamente los endpoints que está consultando Platzi Movies. En el home aparecen dos: el de tendencias y el de la lista de categorías. Si entras a una categoría como Acción, aparece un endpoint distinto. Si vuelves al home, ya cargan tres llamadas porque sumas las anteriores [07:20].
Cómo forzar una recarga limpia para medir tiempos reales
Para medir cuánto tarda realmente una solicitud desde cero, haces clic derecho sobre el botón de recargar y eliges Empty cache and hard reload. Esa opción borra el caché y simula a un usuario que abre la aplicación por primera vez.
En esa primera carga, el endpoint de categorías pesa alrededor de 4.9 KB y el de tendencias unos 830 B, con sus respectivos tiempos de red.
Por qué el navegador ya cachea las llamadas a la API sin que yo escriba código
Aquí viene lo interesante. Si después del hard reload simplemente navegas entre tendencias, categorías y vuelves al home, la columna de tamaño deja de mostrar KB y empieza a decir disk cache, con tiempos de un milisegundo [10:15].
Eso significa que estás cargando esa información hasta 75 veces más rápido que en la primera solicitud. ¿La razón? Los navegadores aplican por defecto una estrategia de caché bastante decente para solicitudes HTTP que ya viste hace poco. No volvieron a pegarle al backend; reusaron la respuesta guardada en disco.
¿Qué es disk cache en la pestaña Network? Es la indicación de que el navegador no hizo una nueva solicitud HTTP, sino que tomó la respuesta previamente almacenada en disco, devolviéndola en milisegundos.
Cuál es la diferencia entre caché del navegador y memoization
La memoization la implementas tú en JavaScript: creas un objeto, guardas resultados a medida que los obtienes y, si vuelves a necesitarlos, los lees de ahí en lugar de volver a llamar a la API. Funciona excelente para cálculos como Fibonacci.
El caché del navegador, en cambio, lo gestiona el propio navegador en su memoria de disco. La diferencia clave es la persistencia entre recargas:
Por eso, para consumo de API REST en una app como Platzi Movies, el caché nativo gana. Ya está haciendo el trabajo de optimización HTTP por ti.
Dónde sí puedo optimizar mi front-end si las APIs ya están cacheadas
Si la solicitud HTTP ya viene resuelta, el verdadero margen de mejora está en otros recursos. Y aquí las imágenes son el ejemplo más visible.
Al recargar la app, la pestaña Network muestra que se intentan cargar decenas de imágenes, pero el navegador solo logra renderizar tres a la vez. Cargar todo lo demás de golpe es desperdicio puro [13:40].
Entonces, lo que realmente puedes optimizar desde el front-end incluye:
La estrategia para Platzi Movies es clara: dejar que el navegador haga la magia con las llamadas HTTP y concentrar tu esfuerzo en los recursos pesados que sí dependen de tus decisiones de código.
¿Tú qué opinas? Si crees que en este proyecto valdría la pena forzar una estrategia distinta de caché o aplicar memoization manual, déjamelo en los comentarios. Y si usas un navegador distinto a Google Chrome, cuéntame con qué herramienta inspeccionas tus solicitudes.
Fernando Yutiz
😲😲😱😨🙀🙀
😂🤣
Juan Castro
ProfesorOh nooooooo me habeis hackeadoooooo
Marco Andres Vasquez
Ctrl + F5
"para re carga fuerte"
Baltazar Andersson
Quiero decir que el profesor de manera equivocada filtró su API key en el 7:12, haciendo hover en la peticion list...
Juan Castro
ProfesorReportado
Salomon Moreno
No se ha censurado y la API Key sigue funcionando.
Raycris Maldonado
Aqui les dejo el link de la API que estamos utilizando, primero deben de tener una cuenta con ellos para que les pueda dar la API_KEY. https://www.themoviedb.org/settings/api
Sergio Javier Lopez Olivera
Una cosa bastante útil que sale en el Curso de manipulación del DOM es la técnica del Lazy loading, la cual consiste en llamar a la API solo cuando estemos sobre la imagen y no desde antes, así podemos tener una carga más rápida de las imágenes y nuestra aplicación corre de la misma forma.
Mariana Contreras
En algunos poryectos me ha tocado implementar esta libreria https://axios-cache-interceptor.js.org/#/, excelente para manejar memoization de peticiones ya desde el código.
Luis Angel Olivárez Estrada
Hola, en el curso pasado vi que nos estaban recomendando usar un archivo .env Busqué información al respecto pero al parecer se guardan en el equipo unas variables de entorno. ¿Cómo se utiliza el .env en producción?
Si alguien tiene documentación se lo agradecería.
Xavier Medina Veintimilla
¡Hola! :D
Por acá te dejo una lectura sobre el archivo .env
Nunca pares de aprender 💚
Juan Castro
ProfesorLas variables de entorno son variables del sistema operativo de nuestra computadora (o del servidor donde vida nuestra aplicación) donde podemos guardar de forma mucho más segura información sensible como las API KEYs. . En la clase de Deploy explicamos eso a un poquito más de detalle. Ahí mismo también puedes recomendar que sí grabemos el curso avanzado donde, entre otras cosas, haríamos esto. . Spoiler: se necesita que configuremos nuestro propio backend para lograr esto.
Alonso Chaves
Mientras estudiaba en la universidad tenia que hacer unos ejercicios de JavaScript, no funcionaba bien aunque el código estaba perfecto, pasaron muchas horas hasta que el profe me dijo que presionara CTRL +F5 para recargar borrando el caché y se arreglo. Lo digo por si alguien alguna vez ha tenido un problema similar para que lo tengan en cuenta! A veces el caché juega malas pasadas
Guadalupe Monge Barale
Para profundizar en Network está esta clase del profe Diego
Dario Paladines
Yo tuve un problema de carga con mi app desde el anterior curso, y ahora viéndolo bien creeria que es por el caché y la carga de los archivos. Cuando empiezo una búsqueda noto que los llamados a la api se cargan de primeras, pero el index no, por lo tanto no hay una estructura a mostrar y se queda en negro la pantalla 👇
Wilberk Ledezma
Muy interesante lo de la caché.
Ameth Ordoñez Erazo
Yo utilizo Mozilla Firefox, y las herramientas de desarrollo tambien son muy buenas, practicamente las mismas que tiene Google Chrome.
Marco Andres Vasquez
yo uso opera gx es mas parecido a chrome que firefox
Christopher David Erazo Herrera
No se si sea un ejemplo válido en cual se aplica el tema del caché, pero recuerdo que en el Curso Profesional de Python hay un apartado sobre la carpeta pycache que lo que hace es que se guarda nuestro código ya ejecutado , para que en una segunda ejecución al sin algún cambio en el código, este no sea interpretado y conviertido a bytecode de nuevo, si no que lo cargue ya directamente ayudandonos a que se ejecute más rápido
Pueden consultarlo en este link: ¿Cómo funciona Python?
Jefred Bedoya
Inspección y Debugging con la Pestaña Network
La herramienta Network en el navegador es fundamental para entender el rendimiento y el comportamiento de nuestra aplicación al consumir APIs.
Gestión de Caché y Optimización
Nicolás Felipe Pinto Vega
Mi navegador no esta implementando la estrategia del caché como se mostró en la clase. Despues de borrar el caché y hacer el hard reload sigue haciendo las solicitudes a la API. ¿Que puedo hacer para que mi navegador me guarde esa información en el caché y tener la optimización de carga?
Agustina Corvo
Hola Nicolás! Justamente si borrás el caché y se hace un hard reload, las solicitudes a la API se vuelven a hacer, tal como se muestra en la clase. Si solo hacés reload (sin borrar la caché) el navegador va a guardar las peticiones y no se van a volver a hacer.
Espero que haya quedado claro, saludos!
Ricardo Alfonso Chavez Vilcapoma
Interesante, no sabía la funcionalidad de Network, increíble…otra visión del mundo.
Miguel Enrique Velásquez Millán
Oww, en mi caso particular no se están guargando en caché todas mis solicitudes a la api. · En mi proyecto, además de conectarme a la API de TheMovieDB, también estoy usando una API traductor para tener en español las categorías y las descripciones de las películas, y precisamente estas últimas solicitudes a la API Traductor no se están guargando en caché (y por tanto sin importar si recargo la página o no, siempre tardan unos segunditos en cargar). · Pero bueno, creo que eso ya es más debido al hecho de que, en el caso de la API Traductor, las solicutdes que hago para que me traduzca las categorías y las descripciones de las películas son de tipo POST (en vez de las de tipo GET de TheMovieDB), y estas últimas no las guarda en caché a pesar de que en realidad siempre traduce el mismo texto.
Jose Castillo
Miguel Enrique Velásquez Millán
Je je je, sipi sipi, me lo suponía. No me había dado cuenta cuando decidí hacer la implementación conectándome a esa API Traductor, pero luego de empezar el Curso Profesional y ver que una de las últimas clases se titula "Reto: Selección de Idioma", je je. · Pero bueno, igualmente muchas gracias~ Ya luego actuliazo mi app y la pongo directamente en español ✨.
La API de movieDB ya te tiene con la opción de lenguaje
const api = axios.create({ baseURL: 'https://api.themoviedb.org/3', headers: { 'Content-Type': 'application/json; charset=utf-8', }, params: { 'api_key': API_KEY, 'language': 'es-VE' }, });
Pero esta bien que hayas implementado otra api, ya que es para fines educativos no esta de mas aprender a trabajar con varias API.