阻止浏览器缓存文本文件

时间:2013-12-15 05:38:51

标签: javascript html html5 caching text-files

在圣诞节的十二天里,我正在运行这个简单的家庭网站。作为其中的一部分,我每天都会编辑一个文本文件,每天都会给出不同的答案/内容。好吧,我有一个问题,我必须告诉大家删除缓存以获取新信息。我以前从未见过这个。我刚刚添加了这两个陈述。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);

找到How to control web page caching, across all browsers?

我测试过所有东西仍然可以正常加载,但我不想通过改变实际内容来测试它,直到明天。我的问题是,有没有办法确保浏览器不使用此javascript代码缓存我正在使用的文本文件

function readInFile(file)
{
    var rawFile = new XMLHttpRequest();

    rawFile.open("GET", file, true);
    rawFile.onreadystatechange = function()
    {
        if (rawFile.readyState === 4)
        {
            if (rawFile.status === 200 || rawFile.status == 0)
            {
                parseFile(rawFile.responseText, document.getElementById("answerText").value)
            }
        } 
    };
    rawFile.send(null);
}

我不希望浏览器停止缓存html / js,而是继续缓存文本文件。我现在拥有的东西会阻止浏览器这样做吗?我之前从未遇到过这样的问题&gt;我这次也使用了HTML5 Boilerplate来试试它是否有任何区别。我最终删除了很多。

2 个答案:

答案 0 :(得分:8)

Cache-busting

在网址末尾添加随机参数,与当前时间戳一样。看起来像:

http://yourdomain.com/path/to/file.txt?t=1873261823

您可以使用new Date().getTime()或更新的Date.now()或使用您自己的随机数生成器作为参数值。

答案 1 :(得分:0)

您可以将每个文件称为不同的文件。

http://example.com/file123809.txt

如果需要,可以在那里混合一些PHP。

http://example.com/file<?php echo time(); ?>.txt

显然有其他方法可以获得时间戳,甚至只是一个唯一的数字,但我觉得我列出的方式是最方便的,因为PHP是服务器端,它可以在所有设备上运行。