Recordar las casillas marcadas en las páginas: ¿cuál es la mejor manera?

Necesito agregar una funcionalidad similar a Gmail donde las casillas de verificación en una lista de elementos se recuerdan en varias páginas de resultados y cuando desaparecen y vuelven al resultado. Lo que intento descubrir es la mejor manera de hacerlo. Estoy usando PHP y probablemente jQuery.

Mi primer pensamiento es agregar un onClick a cada casilla de verificación que activa una llamada AJAX al servidor que almacena la identificación en una matriz en la sesión. Cada vez que se carga una lista de elementos, el sistema verificará si la fila está marcada y la casilla de verificación si es necesario. Para mayor confiabilidad, la casilla de verificación estaría desmarcada después de verificar si la solicitud al servidor no puede completarse (problema de conexión, error del servidor, etc.) y la solicitud se realizará lo más rápido posible.

Esto suena muy bien, excepto por algunos elementos:

comprobar todo: ¿qué pasa? ¿Envía 30 solicitudes (elementos de página predeterminados) al servidor? ¿O elimino todos los onClicks, verifico las casillas de verificación, envío una solicitud al servidor con todos los identificadores y luego vuelvo a agregar los onClicks? O...? Problema similar con desmarcar todo.velocidad: podría comenzar a haber problemas si cientos de usuarios están revisando y desmarcando todo el tiempovelocidad del navegador: creo que es mejor agregar onClick con JS después de que se cargue la página, lo que creo que podría tomar un segundo o 2 si hay 500 o más elementos en una página. Se convertiría en un problema mayor con check all.

En el pasado, no he encontrado una forma confiable de detectar cuándo el usuario deja una página. Si hay una manera confiable, entonces podría ver que esta es una opción, por lo que solo registra en cada descarga de la página.

¿Hay alguna otra solución o mejores métodos?

Editar: Según lo mencionado porEran Galperin, el método check all solo necesitaría marcar cada una de las casillas de verificación y luego hacer una llamada ajax con todas las filas. No es necesario eliminar el onClick.

Además, parece que el método de Delegación de eventos es una buena idea, facilitaría mucho las cosas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta