cómo hacer carga diferida en GridJs
acerca de la carga diferida
Al tratar con un archivo de hoja de cálculo que contiene múltiples hojas de trabajo, podemos optimizar el proceso de carga cargando inicialmente solo la hoja activa.
Esta estrategia asegura que la respuesta JSON del lado del servidor incluya inicialmente solo los datos de la hoja activa.
Como resultado, el tráfico web inicial se reduce significativamente, mejorando la experiencia del usuario al minimizar los tiempos de carga.
Además, GridJs está diseñado para responder dinámicamente a las interacciones del usuario. Específicamente, cuando un usuario hace clic en una hoja diferente,
GridJs activa de manera inteligente una solicitud al servidor para obtener los datos específicamente de esa hoja.
Este mecanismo de carga bajo demanda no solo reduce aún más las transferencias de datos innecesarias, sino que también garantiza que el usuario siempre tenga acceso a la información más actualizada de la hoja en la que está trabajando.
Al adoptar este enfoque, no solo optimizamos el tiempo de carga inicial sino que también mantenemos una aplicación receptiva y eficiente que escala bien con el aumento del número de hojas en el archivo de la hoja de cálculo.
Para implementar carga diferida en GridJs, los pasos son
Configurar opción de configuración para carga diferida.
por ejemplo:
Config.setLazyLoading(true);
Establecer URL de acción para carga diferida.
por ejemplo:
const lazyLoadingUrl = "/GridJs2/LazyLoading";
xs.setLazyLoadingUrl(lazyLoadingUrl);
Después de que el usuario haga clic en otra hoja que no sea la activa, la acción de consultar los datos se activará automáticamente por la aplicación de hojas de cálculo.
Implementar acción de carga diferida en el Controlador del lado del servidor.
por ejemplo:
@PostMapping("/LazyLoading")
public void lazyLoadingStreamJson(
@RequestParam(value = "name", required = false) String sheetName,
@RequestParam(value = "uid", required = false) String uid,
HttpServletResponse response) throws IOException {
GridJsWorkbook wbj = new GridJsWorkbook();
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setHeader(HttpHeaders.CONTENT_ENCODING, "gzip");
try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(response.getOutputStream())) {
try {
wbj.lazyLoadingStream(gzipOutputStream, uid, sheetName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}