Compartir a través de


Almacenamiento en caché de aplicaciones para la aplicación de pestaña

El almacenamiento en caché de aplicaciones mejora la hora de inicio posterior de las aplicaciones dentro de Teams, ya que le permite mantener algunos recursos y recursos en memoria que puede usar al rehidratar la aplicación.

El almacenamiento en caché de aplicaciones es compatible con lo siguiente:

Ámbito   Escritorio iOS Android
Personal ✔️ Duración de la caché: 30 minutos ✔️
Chat ✔️ Duración de la caché: 30 minutos ✔️
Canal ✔️ Duración de la caché: 30 minutos ✔️
Pestaña Reunión ✔️ Duración de la caché: 30 minutos ✔️
Panel lateral de la reunión o aplicaciones en reuniones ✔️ Duración de la caché: 20 minutos

Habilitación del almacenamiento en caché de aplicaciones

Para habilitar el almacenamiento en caché de aplicaciones, siga estos pasos:

  1. Llamadas teamsCore.registerBeforeUnloadHandler y teamsCore.registerOnLoadHandler API.

  2. Use contentUrl y entityId pase al controlador de carga para enrutar a la página correcta dentro de la aplicación e invocar notifySuccess o notifyFailure notificar al cliente de Teams que el flujo de inicialización de la aplicación está completo.

    • contentUrl: agregue la dirección URL de la página de contenido.
    • entityId: agregue un identificador único.
  3. Elimine los recursos y realice cualquier limpieza necesaria en el beforeUnload controlador y, a continuación, invoque la readyToUnload devolución de llamada para notificar al cliente de Teams que el flujo de descarga de la aplicación se ha completado.

A continuación se muestra el diagrama de flujo del primer inicio de una aplicación que quiere participar en el almacenamiento en caché de aplicaciones (registre o loadbeforeUnload en el primer inicio de la aplicación):

Captura de pantalla que muestra el flujo del primer inicio de la aplicación en el panel lateral de la reunión.

A continuación se muestra el diagrama de flujo del inicio de la aplicación almacenada en caché:

Captura de pantalla que muestra el flujo del inicio almacenado en caché de la aplicación en el panel lateral de la reunión.

Al participar en el almacenamiento en caché de aplicaciones, el iframe o la vista web que se usa para hospedar la aplicación incrustada se reutiliza a medida que los usuarios navegan a diferentes instancias de la aplicación dentro de una ventana. El iframe o la vista web que se usa para hospedar la aplicación se oculta cuando los usuarios abandonan la aplicación y se muestran cuando los usuarios vuelven a la aplicación.

Nota:

Si el almacenamiento en caché de la aplicación no está habilitado, el iframe o la vista web se vuelve a crear cada vez que el usuario inicia la aplicación.

Hay varias razones para que una aplicación no se almacene en caché o para que una aplicación se quite de la memoria caché, algunas de las razones son (los números aquí están sujetos a cambios):

  • Si la carga de memoria del sistema es alta, la aplicación se quita de la memoria caché.
  • Si el número de aplicaciones almacenadas en caché supera el tamaño máximo de caché, la aplicación almacenada en caché más antigua se quita de la memoria caché.
  • La aplicación no se almacena en caché si Teams no recibe la readyToUnload señal de la aplicación en un plazo de 30 segundos después de enviar la beforeUnload notificación.
  • El almacenamiento en caché de aplicaciones está deshabilitado si la memoria del sistema es menor que 4 GB o si la memoria disponible es menor que 1 GB en Windows o 512 MB en Mac.
  • El panel lateral es el único frameContext compatible para el almacenamiento en caché de aplicaciones en reuniones.
  • No se admite el almacenamiento en caché de aplicaciones en reuniones en las que el número de usuarios invitados es superior a 20.
  • Si una aplicación no se carga, la aplicación no se almacena en caché.
  • En iOS, cuando se finaliza la aplicación de Teams, la aplicación se quita de la memoria caché.

Ejemplo de código

El siguiente fragmento de código es un ejemplo de teamsCore.registerOnLoadHandler api y teamsCore.registerBeforeUnloadHandler :

microsoftTeams.teamsCore.registerOnLoadHandler((data) => {
    console.log("got load from TEAMS", data.contentUrl, data.entityId);
    // use contentUrl to route to correct page 
    // invoke notifySuccess when ready  
    app.notifySuccess();
});
microsoftTeams.teamsCore.registerBeforeUnloadHandler((readyToUnload) => {
    // dispose resources and then invoke readyToUnload
    readyToUnload();
    return true;
});

Herramienta de depuración para aplicaciones almacenadas en caché

Nota:

La herramienta de depuración de aplicaciones almacenadas en caché está disponible en versión preliminar para desarrolladores públicos.

Puede habilitar Proto Task Manager en Teams, una herramienta de depuración que muestra el estado de las aplicaciones almacenadas en caché. En el cliente de Teams, seleccione las teclas Control+Mayús+Alt+8 en Windows o Comando+Mayús+Opción+8 en Mac para abrir Proto Task Manager.

Captura de pantalla que muestra la pestaña almacenamiento en caché en el Administrador de tareas proto en Teams.

La pestaña AppCaching contiene los detalles siguientes:

  • state: muestra el estado almacenado en caché o sin almacenar en caché de la aplicación.
  • isActive: muestra el estado activo o inactivo de la aplicación almacenada en caché.
  • timeElapsed: muestra el tiempo transcurrido desde que la aplicación se almacenaba en caché.
  • supportsLoad: muestra si la aplicación ha registrado el Load controlador si el almacenamiento en caché de la aplicación está habilitado.
  • supportsBeforeUnload: muestra si la aplicación ha registrado el BeforeUnload controlador si el almacenamiento en caché de la aplicación está habilitado.
  • totalFrameMemory: muestra el uso de memoria de la aplicación.
  • totalFrameCommitMemory: muestra el uso de CPU de la aplicación.

Aplicaciones de pestaña de precaching

Nota:

Aunque el almacenamiento en caché reduce los tiempos de carga posteriores de una aplicación, la precaching optimiza el tiempo de carga inicial de una aplicación al permitir que Teams precargue la aplicación. Teams carga previamente las aplicaciones en segundo plano después del inicio o cuando están inactivas, en función de los patrones de uso de aplicaciones recientes de los usuarios y del historial de caché de las aplicaciones. Las aplicaciones precargadas permanecen almacenadas en caché hasta que el usuario abre la aplicación, lo que da lugar a un tiempo de carga más rápido.

Si habilita la precaching, la aplicación usa recursos y se realiza un seguimiento de los datos de telemetría mientras se encuentra en estado almacenado en caché. Para obtener información sobre cómo optimizar la aplicación para la precaching, consulte los procedimientos recomendados.

Habilitación de la precaching para la aplicación de pestaña

Para habilitar la precaching para la aplicación de pestaña, siga estos pasos:

  1. Habilite el almacenamiento en caché de aplicaciones.

  2. Actualice el manifiesto de la aplicación de la siguiente manera:

    1. Establezca el valor de showLoadingIndicator en true. Esta acción garantiza que Teams espera hasta que la aplicación envíe notifySuccess para concluir la secuencia de carga de la aplicación durante la precaching. Para obtener más información, vea showLoadingIndicator.

    2. Agregue el backgroundLoadConfiguration objeto y defina .contentUrl

      {
      "backgroundLoadConfiguration": {
          "tabConfiguration": {
              "contentUrl": "https://www.contoso.com/content?host=msteams&isBackgroundLoad=true"
              }
          }
      }
      

      Nota:

      • contentUrl No puede contener parámetros específicos del contexto, como la dirección URL del sitio de equipo o el identificador de subproceso, ya que Teams carga aplicaciones sin contexto previo durante el inicio.
      • contentUrl debe ser lo suficientemente genérico como para cargarse en segundo plano sin ninguna interacción del usuario.

      Para obtener más información, vea backgroundLoadConfiguration.

Supervisión de la carga en segundo plano

Puede identificar si Teams cargó la aplicación en segundo plano sin interacción del usuario si supervisa la isBackgroundLoad propiedad. Si el estado de la propiedad es true, indica que Teams ha cargado la aplicación en segundo plano y no puede interactuar con el usuario. Por lo tanto, la aplicación no necesita representar elementos de interfaz de usuario, como mensajes de inicio de sesión.

Supervise la isBackgroundLoad propiedad en el contexto de la aplicación para optimizar la aplicación para una carga y representación eficaces del almacenamiento en caché. Para obtener más información, consulte isBackgroundLoad.

Procedimientos recomendados

A continuación se muestran los procedimientos recomendados para almacenar en caché y precaching de aplicaciones:

  • Se recomienda implementar funcionalidades de almacenamiento web o de trabajo de servicio para almacenar los datos o la vista web localmente. Esto ayuda a cargar la aplicación más rápido en los inicios posteriores.

  • Registre los beforeUnload controladores y onLoad justo después de llamar a app.initialize y antes de que la aplicación envíe notifySuccess. Si el cliente de Teams no ve estos registros antes de que el usuario deje la aplicación, la aplicación no se almacena en caché.

  • La precaching aumenta el tráfico a la aplicación además de las solicitudes iniciadas por el usuario. Asegúrese de que el punto de conexión que proporcione como contentUrl puede controlar las solicitudes en segundo plano varias veces para cada usuario en un día. Asegúrese de realizar los ajustes de telemetría necesarios para adaptarse a la carga en segundo plano de la aplicación.

  • Asegúrese de que la aplicación usa menos o igual que 130 MB de memoria en el estado almacenado en caché.

Limitaciones

Las siguientes son las limitaciones del almacenamiento en caché de aplicaciones:

  • Las aplicaciones de página única que usan el enrutamiento del lado cliente para la navegación por páginas pueden beneficiarse del almacenamiento en caché de aplicaciones. Se recomienda usar el mismo dominio en todos los contextos del inicio de la aplicación.

  • Las aplicaciones deben volver a registrarse para eventos como themeChange, , focusEnteretc., en el controlador de carga. El cliente de Teams no enviará ninguna notificación a la aplicación cuando se almacene en caché. Si la aplicación requiere notificaciones incluso cuando se almacena en caché, es posible que el almacenamiento en caché no sea la solución adecuada.

  • El cliente de Teams invoca la loadHandler única vez que se completa la unload secuencia de la aplicación. Por ejemplo, si un usuario inicia la pestaña A de la aplicación y, a continuación, inicia la pestaña B de la misma aplicación, la pestaña B no obtendrá la señal de carga hasta que la pestaña A invoque la readyToUnload devolución de llamada.

  • Las aplicaciones se almacenan en caché por ventana. El almacenamiento en caché de aplicaciones se produce por aplicación (no por pestaña) en la misma ventana.

  • El almacenamiento en caché de aplicaciones no se admite para la fase de reunión o el cuadro de diálogo (denominado módulo de tareas en los contextos de TeamsJS v1.x), ya que se pueden abrir en la parte superior de la pestaña y no se puede usar el mismo iframe o vista web para representar el contenido en la pestaña y el cuadro de diálogo.

  • Registre solo el beforeUnload controlador si la aplicación no requiere almacenamiento en caché de aplicaciones, pero necesita tiempo para guardar el estado de forma segura (ya que dejar la aplicación puede hacer que el contenido de la aplicación se quite bruscamente del modelo de objetos de documento (DOM)). Si la aplicación no se ha registrado para el load evento, se quita del DOM una vez completado el unload flujo.

  • Siga las instrucciones de esta sección para incorporar la aplicación al almacenamiento en caché de aplicaciones en la reunión de Teams. Para la compatibilidad con el almacenamiento en caché de aplicaciones solo en reuniones, registre los load controladores o beforeUnload si el contexto es sidePanel.

  • Se espera que las aplicaciones se suspenden cuando se almacenen en caché (use recursos mínimos de proceso o red y minimice las solicitudes del SDK). Se permiten todos los controladores de registro y las siguientes solicitudes del SDK cuando la aplicación se almacena en caché:

    • initialize
    • notifyappLoaded
    • notifySuccess
    • notifyFailure
    • notifyExpectedFailure
    • getContext
    • getAuthToken
    • readyToUnload
    • getConfig/getSettings

Solución de problemas

¿No se almacenan en caché las aplicaciones? ¿Por qué no se invoca el controlador de carga en la navegación posterior?

  • Compruebe si se cumplen las restricciones de memoria disponibles y del sistema.

  • Reduzca la superficie de memoria cuando se almacene en caché. Use el beforeUnload controlador para eliminar recursos, por ejemplo, liberar referencias y quitar agentes de escucha de eventos que podrían no ser necesarios cuando se almacenan en caché.

Ejemplo de código

Ejemplo de nombre Descripción Node.js
Almacenamiento en caché de aplicaciones Aplicación de ejemplo para mostrar cómo funciona el almacenamiento en caché de aplicaciones en el panel lateral de la reunión. Ver

Consulte también