es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La página de NextJS con getServerSideProps se está cargando lentamente.

Tengo una página con enrutamiento dinámico en mi aplicación NextJS. Solo tiene una llamada a la API. Coloqué esta llamada a la API dentro de getServerSideProps. Mi página tarda aproximadamente 7 segundos en cargar.

El sitio web está alojado en Vercel.

En Postman, la misma llamada a la API tarda 2 segundos.

Enlace a la página:
https://investt.in/mutual-funds/sbi-focused-equity-fund-direct-plan-growth

Código de getServerSideProps:

  export async function getServerSideProps(context) {
  const fund = context.params.fund;
  var fundPageResult = {};
  var titleFundResult = {};
  const titleCase = async (str) => {
    var str1 = await str.replace(/-/g, " ");

    var splitStr = await str1.toLowerCase().split(" ");
    for (var i = 0; i < splitStr.length; i++) {
      splitStr[i] =
        splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1);
    }
    var splitStr1 = await splitStr.join(" ");
    var splitStr2 = splitStr1
      .replace(/Sbi/g, "SBI")
      .replace(/ Sp /g, " S&P ")
      .replace(/Lt /g, "L&T ");

    return splitStr2;
  };

  async function apiRequest(url) {
    const resp = await fetch(url);
    if (resp.ok) {
      return resp.json();
    } else {
      return {};
    }
  }
  const fundPageRes = apiRequest(
    `https://localhost:8000/fundpage/?name=${fund}`
  );

  const titleFund = titleCase(fund);

  await Promise.all([fundPageRes, titleFund])
    .then(([fundPageResul, titleFundResul]) => {
      fundPageResult = fundPageResul;
      titleFundResult = titleFundResul;
    })
    .catch((e) => {});

  return {
    props: {
      fund: fund,
      titleFund: titleFundResult,
      avggReturnsResult: fundPageResult["average"],
    },
  };
}

¿Cómo puedo reducir este tiempo de carga?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay algunas cosas que se pueden hacer para reducir el tiempo de carga de la página con enrutamiento dinámico:

    1. Utilizar memoria caché: En lugar de hacer una llamada a la API cada vez que se carga la página, considera almacenar en caché los datos para que las solicitudes posteriores puedan ser servidas desde la caché. Vercel proporciona opciones de memoria caché que se pueden utilizar para lograr esto.

    2. Optimizar el tiempo de respuesta de la API: 2 segundos para una llamada a la API sigue siendo bastante alto. Considera optimizar el tiempo de respuesta de la API analizando los cuellos de botella en el código de la API y optimizándolo.

    3. Comprimir los recursos: Si la página está utilizando recursos grandes, como imágenes o videos, considera comprimirlos para reducir su tamaño y tiempo de carga. Se pueden utilizar herramientas como next-optimized-images para esto.

    4. Utilizar carga perezosa: Si la página está utilizando componentes grandes que no se necesitan de inmediato, considera utilizar la carga perezosa para cargarlos solo cuando sea necesario. Esto puede mejorar significativamente el tiempo de carga inicial de la página.

    5. Perfilar la página: Utiliza herramientas como Chrome DevTools o Lighthouse para perfilar la página e identificar las áreas que están causando tiempos de carga lentos. Una vez identificadas, optimiza estas áreas para mejorar el tiempo de carga.

Comments are closed.