Foros del Web » Programando para Internet » Javascript »

memoria cache

Estas en el tema de memoria cache en el foro de Javascript en Foros del Web. Buenas tardes foreros, tengo el siguiente problema, estoy haciendo un proyecto con google maps api, para lo cual tengo que hacer un refresh de la ...
  #1 (permalink)  
Antiguo 16/06/2011, 12:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
memoria cache

Buenas tardes foreros, tengo el siguiente problema, estoy haciendo un proyecto con google maps api, para lo cual tengo que hacer un refresh de la posicion de los markers cada x tiempo; el codigo anda, pero me destruye la 'memoria' cache del navegador; trate de hacer un setinterval agregando una variable random (no random exactamente, sino agregando el valor de la funcion gettime()) pero no pasa nada, les pego el codigo y si me pueden dar una mano a ver donde esta fallando les agradezco un monton.
Gustavo.
Código:
<script type="text/javascript">
$(document).ready(function() {

	var map = null;
	var marker = null;
			    
    
    // init map
    var mapLatLng = new google.maps.LatLng(0, 0);
    var mapOptions = {
      zoom: 15,
      center: mapLatLng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    
    function updateData() {	
		// update sensor data
		//$.get('URL THAT GETS CURRENT LAT & LNG');
     // i add this line to generate a 'random' variable in order to avoid page being readed by cache.

              var random = "?=" + (new Date()).getTime(); 

	    $.ajax({
	        // url: 'http://localhost:3000/sensors/1.json',
                // The line above is your original line, i'll write down the new one

                     url: 'http://localhost:3000/sensors/1.json' + random, function(data),
	        success: function(data) {
	            len = data.length;
    	        for (var i = 0; i < len; i++) {
    	            switch (jQuery.trim(data[i].sensor.title)) {
    	            case "lat":
    	              lat = jQuery.trim(data[i].sensor.value);
    	              break;
    	            case "lon":
    	              lon = jQuery.trim(data[i].sensor.value);
    	              break;
    	            default:
break
    	            } //end switch
    	        } // end for        
	        },
            cache: false
	    });
	}
  
    setInterval(function() {
        // update data
        updateData();

        // update google map
        var location = new google.maps.LatLng(lat, lon);
        marker = new google.maps.Marker({
            position: location
        });

        $('#map_canvas').width = '220px';
        $('#map_canvas').height = '588px';
        google.maps.event.trigger(map, 'resize');
        
        marker.setMap(map);
        //map.setCenter(location);
        map.setCenter(marker.getPosition());

    }, 5000);
});
</script>





<div class="section">
	<div class="column titlecolumn"><h2 class="sectiontitle">CDP GPS</h2></div>
	<div class="largecolumn">
		<div id="map_canvas"></div>
	</div>
	<div class="clear"></div>
</div>
  #2 (permalink)  
Antiguo 16/06/2011, 13:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: memoria cache

buenas,
de momento y dejando a un lado jquery, lo que veo mal es el json que le pasas a ajax. luego de la url tienes una declaracion invalida, especificamente una funcion.
Código:
                     url: 'http://localhost:3000/sensors/1.json' + random, function(data), 
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 16/06/2011 a las 13:14 Razón: resaltar codigo
  #3 (permalink)  
Antiguo 16/06/2011, 13:09
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: memoria cache

hmmm javascript no es lo mio, entiendo tu punto, yo pense que con esta linea

Código:
   var random = "?=" + (new Date()).getTime();
se agregaria el numero de milisegundos .......

Tenes alguna idea de como darle alguna vuelta a esto?

Mi idea es generar una variable con (new Date()).getTime(); como para que el hacer el request a 1.json el navegador lo interprete como una pagina distinta y no lea de la memoria del browser.

(y si estoy orinando muy por fuera del receptaculo por favor tambien hacemelo saber)
  #4 (permalink)  
Antiguo 16/06/2011, 13:12
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: memoria cache

eso lo tienes perfectamente bien. tenias que fijarte en el texto que marque en negrita del mensaje anterior, pero lo modificare a rojo para que sea mas notable.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 16/06/2011, 13:29
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: memoria cache

Código Javascript:
Ver original
  1. (new Date()).getTime();

Es similar a:

Código Javascript:
Ver original
  1. +new Date
__________________
blog | @aijoona
  #6 (permalink)  
Antiguo 16/06/2011, 14:24
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: memoria cache

Ya veo tu punto, creo que tengo que cambiar esa function(Data) por
function(updateData) ... es asi?
  #7 (permalink)  
Antiguo 16/06/2011, 14:40
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: memoria cache

no! el punto es que el parametro que le pasas a la funcion ajax es un objeto json. este tipo de objeto tiene una estructura particular. si no sigues esa estructura, el interprete javascript genera error y como resultado la interpretacion del codigo no continua. basicamente la estructura es asi,
Código:
{
token: valor
[, token: valor]*
}
en esta estructura, entiendase que los corchetes indica que lo que esta dentro es opcional y el asterisco indica cuantas veces puede repetirse -en el caso del asterisco cero o mas. en fin, luego de un token va dos puntos (:), seguido un valor para ese token. si quieres agregar mas parametro -tecnicamente propiedades- a ese objeto json, debes separar cada par de token:valor con una coma (,).

ahora bien, volviendo a tu caso. tienes el token url, los dos puntos, seguido el valor el cual es un string y una coma. pero fijate que luego deberias tener un token y un valor. en tu caso, solo tienes un valor, que fue lo que te marque en rojo. es decir, le falta el token. en ausencia del token, el interprete javascript genera error.

¿que debes hacer? si no es parte de los parametros que la funcion ajax requiere, simplemente eliminalo. sospecho que fue accidental que lo escribieras ahi. si es necesario como parte de los parametros, entonces debes indicar un token para ese valor. como no manejo jquery, entonces no se cual es el caso que corresponde.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 17/06/2011, 09:36
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 18 años
Puntos: 0
Respuesta: memoria cache

OK, me queda claro que tengo que ponerme a leer.

Muchas gracias.

Etiquetas: cache, memoria
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 13:24.