Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Reducir solicitudes Ajax

Estas en el tema de Reducir solicitudes Ajax en el foro de Frameworks JS en Foros del Web. Hola a todos, tengo una parte de la web que quiero hacer dinámica, es un contador y se actualiza desde una base de datos cada ...
  #1 (permalink)  
Antiguo 28/06/2010, 05:38
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 13 años, 10 meses
Puntos: 0
Reducir solicitudes Ajax

Hola a todos, tengo una parte de la web que quiero hacer dinámica, es un contador y se actualiza desde una base de datos cada 5 segundos por medio de ajax.

El problema que tengo es que cuando varios usuarios tienen la web abierta mucho tiempo el número de solicitudes que recibe el servidor se dispara desmesuradamente y aunque sea una petición de unos pocos bytes el hosting me limita el número de solicitudes.

¿Hay alguna forma de mantener el contador de créditos actualizado a tiempo real (o cada 5 segundos) con la base de datos sin consumir semejante burrada de solicitudes en el servidor?

Un saludo y muchas gracias.

Os pongo el código que uso actualmente:

Código:
<script>
check_credits();
function check_credits() {
     oXML = AJAXCrearObjeto();
     oXML.open('GET','credits.php?user=1');
     oXML.onreadystatechange = leerDatos;
     oXML.send();
     function leerDatos(){
          if (oXML.readyState == 4) {
              document.getElementById('creds').innerHTML = oXML.responseText;
              var time_credits = setTimeout('check_credits();',5000);
          }
     }
}
</script>
<div id="creds"></div>

Última edición por Gush_ALK; 28/06/2010 a las 05:44
  #2 (permalink)  
Antiguo 28/06/2010, 08:09
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Reducir solicitudes Ajax

Estas haciendo polling continuamente, asi que es normal que el server se resienta. Intenta llamar a la funcion check_credits() cuando sea estrictamente necesario.
Supongo que los créditos se usarán para determinadas acciones o incrementarán cuando se hacen otras.

Entonces, sería llamar a la funcion pues antes y despues de cada acción, pqa no ser que te expliques mejor, no entiendo para que querrías saber cada 5 segundos cuantos créditos tiene el user.

otra opción sería usar técnicas como el long-polling o comet (http push), que devuelven datos al cliente cuando hay un cambio en el servidor, pero si usas un servidor apache vas a encontrarte problemas.

Saludos
  #3 (permalink)  
Antiguo 28/06/2010, 09:43
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Reducir solicitudes Ajax

Hola, muchas gracias por la ayuda, no me sirve llamar a la función porque los creditos varian en la base de datos sin que el usuario lo solicite ya que se restan con acciones automaticas por lo que la unica forma que he encontrado para comprobarlo es haciendo una nueva petición cada x segundos.

Quizás lo que necesite es el long-polling o comet (http push) como me dijiste aunque tengo un servidor compartido apache, lo echare un vistazo.

Muchas gracias por la ayuda.

Etiquetas: ajax, reducir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:57.