En primer lugar, necesitará algún tipo de almacenamiento sin conexión. Las capacidades de HTML5 son el sucesor de Google Gears, como se indica en el google gears developer blog; En esencia, el propósito de Google Gears era simplemente impulsar el desarrollo & posterior adopción de las características de HTML 5.
Específicamente se debe buscar en los HTML5 offline (API) here's a tutorial, y los Storage API también puede ser útil (relevant tutorial).
En lo que respecta al diseño, básicamente necesitará mantener su estado de aplicación web completo del lado del cliente y luego enviar las diferencias (es decir, actualizar el estado del servidor) tan pronto como la conexión al servidor vuelva a estar disponible.
De la parte superior de mi cabeza, hay 2 formas sencillas para diseñar este:
a mantener explícitamente a los Estados de aplicaciones independientes para el cliente y el servidor. Básicamente, cuando el usuario realiza una acción, primero se aplica al estado de la aplicación cliente y luego a intervalos específicos (y/o activadores, por ejemplo, el usuario hace clic en el botón Guardar), el cliente envía las diferencias entre el último estado conocido de el servidor y el estado actual del cliente. Esto probablemente sea más adecuado para aplicaciones web altamente interactivas, y sospecho que Google Docs funciona en este tipo de diseño. Dependiendo de su aplicación (si pueden ocurrir "cambios conflictivos"), también deberá contabilizar la fusión del estado de la aplicación: ¿anula con el último estado de cliente recibido o intenta fusionarse de forma inteligente? (Tendrás que decidir cuál tiene más sentido para tu aplicación en particular).)
Registre las acciones de los usuarios mientras está fuera de línea, y repítalas una vez que la conexión vuelva a estar disponible. Implementa esencialmente el Command design pattern, y tiene tanto el código del lado del cliente como el código del lado del servidor para manejar cada comando. El código del lado del cliente siempre maneja cada comando, y mientras la conexión al servidor está disponible, el código del lado del cliente también envía los comandos al servidor. Es probable que desee implementar algunos lotes, para evitar solicitudes continuas al servidor, y también alguna funcionalidad de retrotracción cuando las solicitudes al servidor fallan (por ejemplo, cambios en conflicto). Esto termina pareciéndose más o menos a la interfaz de usuario de gestión de correo electrónico principal de GMail, donde puede deshacer operaciones.
Puede probar una alternativa. Por ejemplo, una aplicación flash utilizada para el modo fuera de línea. Mientras que una aplicación web se utiliza para el modo en línea. –
El almacenamiento sin conexión está sobrevalorado. – bhagyas