从文本文件中获取最新数据


Getting latest data from a text file

更新文本文件的内容时,它不会更新。相反,我必须删除谷歌浏览器中的所有缓存和其他内容才能使其刷新。但是,当使用 Apache 服务器(本地主机)时,它确实有效。

我尝试添加a:<meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT"/> <meta http-equiv="pragma" content="no-cache" />,但问题仍然存在。

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);
}

我还有另一个 JavaScript 只是在div 中打印它:(定时运行会有一些延迟)

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

如果您需要实时查看网页,请单击此处。

这似乎是一个缓存问题。 我不能确切地描述为什么它会以这种方式发生,但根据我的经验,在 get 请求中的 url 末尾添加一个随机字符串应该有效。 我会建议如下:

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

与这篇文章类似的东西会对你有所帮助。 它旨在链接到文件,每次重新加载页面时都会被视为一个新链接,但是,同样适用于您的情况:

绕过缓存的 HTML 链接

我建议使用jQuery或其他不错的JavaScript库。如果你这样做,那么检查jQuery中是否有缓存选项。

尝试按原样解决您的问题,请尝试此。.

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);
}

上述操作是生成自纪元以来的时间戳,并将其作为参数添加到 AJAX 调用中。