JavaScript不是从缓存加载文件

时间:2014-12-21 15:48:00

标签: javascript jquery caching

我有这个功能从特定位置读取文本文件:

<html>
  <head>
    <script>
      function readTextFile(file){
        var out_text=''
        var rawFile = new XMLHttpRequest();
        rawFile.open("GET", file, false);
        rawFile.onreadystatechange = function (){
          if(rawFile.readyState === 4){
            if(rawFile.status === 200 || rawFile.status == 0){
              var allText = rawFile.responseText;
              out_text=allText;
            }
          }
        }
        rawFile.send(null);
        return out_text;
      }
    </script>
  </head>
  <body>
    <div id="file_txt"></div>
    <script>
      txt = readTextFile('http://arbsq.net/dchampolu/champolu_data.txt');
      document.getElementById("file_txt").innerHTML=txt;
    </script>
  </body>
</html>

问题是我想读取一个不断变化的文本文件: http://arbsq.net/dchampolu/champolu_data.txt

当我运行此函数一次时,浏览器缓存文本文件,然后每次运行代码时,它只获取缓存版本,而不是更新版本。

我总是可以告诉用户清理这个缓存和这类东西,但有没有一种方法可以通过JavaScript或jQuery强制浏览器只使用当前版本的文件而不是缓存版本?

2 个答案:

答案 0 :(得分:3)

您可以设置服务器以告知客户端不要缓存文件,也可以在URL中使用缓存破坏程序。
对于缓存清除,只需在末尾添加一个具有唯一值的查询字符串

rawFile.open("GET", file+'?dc='+(new Date()).getTime(), false);

答案 1 :(得分:2)

对于虚拟随机数,您也可以使用时间戳 例如:'http://arbsq.net/dchampolu/champolu_data.txt?' + (new Date()).getTime()