Se utiliza cache en el cliente y en el servidor.

En el cliente se almacena el resultado de las consultas y se almacenan las entidades. El objetivo es reducir los accesos al servidor. Cuando detecta alguna persistencia, se limpian todas las consultas y solo las entidades modificadas en las persistencia (se mantiene un esquema de identificación de entidades).

En el servidor se almacena solo el resultado de las consultas, el objetivo es reducir la cantidad de accesos a la base de datos. No se justifica almacenar las entidades al igual que el cliente. Cuando se detecta alguna persistencia, se limpian todas las consultas.

El procedimiento en el servidor se sintetiza de la siguiente forma: Si la consulta esta cacheada, se devuelve el valor de la cache, caso contrario, se accede a la base de datos, se aplica un proceso de transformación al resultado (jsonificación), se guarda en cache y se devuelve el resultado.

Limpieza de cache

En la base de datos se almacenan las transacciones ejecutadas identificando las entidades que han sido modificadas.

En la cache se almacena la fecha de la última transacción realizada.

En la sesión se almacena la fecha del último chequeo de transacciones.

Si la (fecha del ultimo chequeo < fecha de la ultima transaccion) se realiza una limpieza de la cache.

En el cliente, cada vez que se accede a algún componente, se realiza un chequeo de transacciones invocando a la api. En el cliente es necesario determinar las entidades modificadas para borrarlas de la cache y mantener a las restantes.

En el servidor cada vez que se accede a la base de datos, se realiza un chequeo de transacciones. En el servidor no es necesario consultar a la base de datos ya que se desestima todo el cache.

Ejemplo de cache en el cliente: persona123456 = “{id:123456,nombres:’Juan’,apellidos:’Perez’}”

Tabla Transacción: El detalle de las transacciones se almacena habitualmente en una tabla en la base de datos denominada Transacción.

Método Dba::check() //encargado de verificar si hay algún cambio en las transacciones y en caso afirmativo, accede a la base de datos para obtener las transacciones