Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/11/2005, 03:50
Shockly
 
Fecha de Ingreso: agosto-2005
Mensajes: 109
Antigüedad: 18 años, 7 meses
Puntos: 0
Curioso problema, nunca me lo había planteado.

Si tuviera que resolverlo lo haría así: El server le envía al cliente (navegador) 1K de 'comentario html' (aleatorios, esto es fundamental) y es el propio cliente el que mide su velocidad (lo que tarda en llegar ese 'comentario')... y en función de ella toma una decisión: Se va a una página y otra, o bien se va a la misma página a la que pasa un valor para que sea el server el que en función de ese valor haga una cosa u otra... Sencillo y elegante.

Realmente se trata de un test de velocidad en toda regla... con una decisión final en vez de mostrar los valores numéricos.

Por cierto, en la propuesta que te han hecho, el test de velocidad de http://www.desarrolloweb.com/articulos/2115.php tiene un fallo garrafal... que invito a descubrir.


Un saludo.


Esto funciona... lo único que deberás de ajustar son los saltos (a dónde van y si pasan o no valor) y el threshold de la alta/baja velocidad. Como es obvio, también podrías cambiar el 'comentario', que es de 1K por cualquier otro (512 o 256 bytes, por ejemplo), de forma que el cliente ni se entera.

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" lang="es-MX">
    <META NAME="ROBOTS" CONTENT="noindex, follow">
    <META HTTP-EQUIV="Expires" CONTENT="Tue, 01 Jan 1980 1:00:00 GMT">
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
    <META name="keywords" content="lo que sea" />
    <META name="description" content="lo que sea" />
    <title>el título</title>
<script language="javascript">
    Hs=new Date();
    beg=Hs.getTime()/1000.0;
</script>
<!--<?
    $kas 
1;                //  enviará 1K para medir su velocidad
    
$out = array();
    for( 
$i=0$i<$kas$i++ ) {
        
$linea "";
        for( 
$m=0$m<32$m++ )             // 1K, 1.024 bytes
            
$linea .= md5(microtime());      // md5 son 32 bytes
        
$out[$i] = $linea;
    }
    for (
$i=0;$i<=$kas;$i++)
        echo 
$out[$i];
?>-->
<script language="javascript">
    var timeB=new Date();
    var tiempo=((timeB.getTime())/1000.0) - beg;
    var dim=<? echo 1024 $kas?>;
    document.write("</head>");
    if ( tiempo > 0.500 ) {        //  Este valor (en segundos) es el threshold de la alta/baja velocidad
        document.write("<body onload=document.location.replace(\"bajavelocidad.php?t="+tiempo+"\")>");  
    }
    else {
        document.write("<body onload=document.location.replace(\"altavelocidad.php?t="+tiempo+"\")>");  
    }
</script>
</body>
</html>