0

更新文本文件的内容时,它不会更新。相反,我必须删除我的谷歌浏览器中的所有缓存和其他内容,以使其刷新。但是,它在使用 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;

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

4

3 回答 3

2

这似乎是一个缓存问题。我无法准确描述为什么会发生这种情况,但根据我的经验,在获取请求中的 url 末尾添加一个随机字符串应该可以工作。我建议如下:

xmlHttp.open("GET", "counter.txt?" + Math.random(), true);
于 2012-07-03T23:55:20.967 回答
1

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

绕过缓存的 HTML 链接

于 2012-07-03T23:58:02.720 回答
0

我推荐使用 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 调用中。

于 2012-07-04T00:00:23.920 回答