Obtener los datos más recientes de un archivo de texto

Al actualizar el contenido de un archivo de texto, no se actualiza. En cambio, tengo que eliminar todo el caché y demás en mi Google Chrome para que se actualice. Sin embargo, funciona cuando se usa un servidor Apache (host local).

Intenté agregar un: <meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT"/> <meta http-equiv="pragma" content="no-cache" />, pero el problema sigue ocurriendo.

function MakeRequest()
{
  var xmlHttp = getXMLHttp(); // just a basic XML request
  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse(xmlHttp.responseText);
    }
  }
  xmlHttp.open("GET", "counter.txt", true); 
  xmlHttp.send(null);
}

Y tengo otro JavaScript simplemente imprimiendo esto en un div: (programado para ejecutarse con algo de retraso)

document.getElementById('counterHolder').innerHTML = response;

Haga clic aquí si necesita ver la página web en vivo.

preguntado el 04 de julio de 12 a las 00:07

¿Has revisado tu consola de javascript? Sigo recibiendo 'el número no está definido'; ¿Qué estás haciendo con la variable 'número'? -

Comprobado ahora: era una pequeña porción de código que ya no estaba usando. -

Entonces, ¿por qué sigue ahí? He notado que a veces, si hay un error en una función, deja de ejecutar la función por completo; Si ya no se usa, ¿puedes quitarlo? -

Solo olvidé quitarlo. Gracias por notar el código innecesario adicional. -

3 Respuestas

Esto parece ser un problema de almacenamiento en caché. No puedo describir exactamente por qué sucede de la manera en que sucede, pero en mi experiencia, agregar una cadena aleatoria de caracteres al final de su URL en su solicitud de obtención debería funcionar. Sugeriría algo como lo siguiente:

xmlHttp.open("GET", "counter.txt?" + Math.random(), true);

Respondido 04 Jul 12, 00:07

Creo que algo similar a este post te ayudaría. Su objetivo es vincular a un archivo que se vería como un enlace nuevo cada vez que se vuelve a cargar la página; sin embargo, lo mismo se aplicaría en su situación:

Enlace HTML que pasa por alto el caché

contestado el 23 de mayo de 17 a las 11:05

+1 básicamente, la publicación vinculada dice que solo necesita agregar una marca de tiempo como parámetro de cadena de consulta. entonces, algo como: url = url + "?q=" + new Date().getTime();. He hecho esto en el pasado. Supongo que hay una manera de configurar la configuración de caché para resolver el problema, pero creo que esto es mucho más rápido y menos molesto. - lbstr

Recomiendo usar jQuery u otra biblioteca JavaScript decente. Si lo hace, verifique que haya una opción de caché en jQuery.

Tratando de solucionar su problema tal como está, intente esto ...

function MakeRequest()
{
  var xmlHttp = getXMLHttp(); // just a basic XML request
  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse(xmlHttp.responseText);
    }
  }
  var timestamp_since_epoch = new Date().getTime();
  xmlHttp.open("GET", "counter.txt?"+timestamp_since_epoch, true); 
  xmlHttp.send(null);
}

Lo que hace lo anterior es generar una marca de tiempo desde la época y agregarla como parámetro a la llamada AJAX.

Respondido 04 Jul 12, 01:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.