Estoy usando SWR gancho junto con Siguiente.js por primera vez y he tratado de obtener algunas respuestas sobre algo, pero no los consigo, ni siquiera con los documentos.

Preguntas : Entonces, sé que SWR proporciona un caché con sus datos, y se actualiza en tiempo real, pero me perdí un poco entre dos opciones que tiene que usar el gancho. Entonces, normalmente, tienes dedupeinterval y refreshinterval.

refreshInterval = 0: polling interval (disabled by default)
dedupingInterval = 2000: dedupe requests with the same key in this time span

Ahora, ¿cuáles son las diferencias entre estos dos? Si tengo dos solicitudes con la misma clave, se actualizará después de dos segundos? ¿Es lo mismo que el refrigerador? Si uso refreshinterval, ¿tendría problemas con el rendimiento? Ya que está haciendo una solicitud en muy cortos períodos de tiempo.

Si puedes ayudarme con esto, sería genial!

Gracias por tu tiempo !!

0
Diego 26 may. 2021 a las 16:12

1 respuesta

La mejor respuesta

Ahora, ¿cuáles son las diferencias entre estos dos?

La diferencia es que:

  • refreshInterval está definiendo un tiempo después de lo cual se enviará una nueva solicitud para actualizar sus datos. p.ej. cada segundo.
  • dedupeInterval está definiendo un tiempo durante el cual, si ya se envió una solicitud para obtener datos específicos (es decir, un dato que tiene una clave específica), al hacer que un componente solicite una nueva solicitud para actualizar los datos, la actualización < Fuerte> no se hará .

Deduplicando significa eliminar duplicados, es decir. Haciendo potencialmente menos solicitudes, no más. Le dan a un ejemplo en su documentación con un componente que hace que 5 veces otro componente llamado { {X0}} que usa el gancho SWR. Pero la solicitud real se realizará una sola vez porque esa representación estará dentro del intervalo de tiempo predeterminado de 2 segundos.

Si tengo dos solicitudes con la misma clave, se actualizará después de dos segundos? ¿Es lo mismo que el refrigerador?

No, el dedupeInterval establecido en 2 segundos no actualizará automáticamente los datos. Se actualizará solo si un componente que usa la misma tecla con el gancho SWR se reenvía después de los 2 segundos. O si no ha desactivado otros mecanismos de actualización, como el enfoque y el usuario pone el enfoque en su componente.

Con refreshInterval, habría una llamada de API cada vez que X cantidad de tiempo, siempre que el componente aún esté montado, incluso si no retenezca y el usuario no interactúa con él.

Si uso refreshinterval, ¿tendría problemas con el rendimiento? Ya que está haciendo una solicitud en muy cortos períodos de tiempo.

Sí, si el usuario abre su página y no hace nada más que leer contenido durante 20 segundos, y ha establecido el refreshInterval a 1 segundo, habrá 20 llamadas API para actualizar los datos durante ese tiempo. Ese comportamiento puede ser útil si sus datos cambian cada pocos segundos y necesita tener la UI actualizada. Pero claramente puede ser un problema de rendimiento.

La razón por la que el refreshInterval está deshabilitado de forma predeterminada, mientras que el dedupeInterval se establece en 2 segundos es evitar demasiadas llamadas API.

1
Roman Mkrtchian 28 may. 2021 a las 21:13