为什么缓存在ajax请求中不明确?

时间:2015-12-18 10:29:24

标签: javascript php ajax caching

我有外部js文件,它使用ajax请求运行home.php文件。

我的代码中的一切都很好。但即使我在url中添加随机函数,缓存也不清楚。

这是我的js代码。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        alert(xmlhttp.responseText);
    }    
}
xmlhttp.open("GET","http://myurl/home.php?t="+Math.random(),true);
xmlhttp.setRequestHeader( "Pragma", "no-cache" );
xmlhttp.setRequestHeader( "Cache-Control", "no-cache" );
xmlhttp.send(); 

每次我从index.php调用这个js文件时,都会得到缓存结果。

为了避免缓存问题,我已经在url中添加了唯一ID。但它不起作用。所以,请给我任何解决这个问题的建议。

1 个答案:

答案 0 :(得分:1)

为避免jscss个文件包含缓存问题(回答问题评论中的问题),您必须在每次更改后自动更改其包含链接,为此您可以使用{{1在追索权中包括filemtime("file")

中的步骤

html返回文件创建时间,请在此处查找手册 - http://php.net/manual/en/function.filemtime.php

filemtime

因此,通过这种方式,<script src="http://url/some.js?t=<?php filemtime("PATH_TO_FILE/some.js") ?>" > </script> <link rel="stylesheet" type="text/css" href="http://url/some.css?t=<?php filemtime("PATH_TO_FILE/some.css") ?>" > some.js每次修改时,他们的创建时间都会发生变化,而some.css将会添加新的网址链接(home.php)追索权和bowser将不得不重新加载