Ajax 浏览器中的缓存问题?

Ajax cachhing issue in Browser?

我的JavaScript函数如下:

function getActivityDiscussed(str,id)
{
            var xmlhttp;    
            if (str=="")
            {
              document.getElementById("list_bottom").innerHTML="";
              return;
            }
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
              {
                document.getElementById("list_bottom"+id).innerHTML=xmlhttp.responseText;
              }
            }
            xmlhttp.open("GET","<?php echo base_url($client_url.'communications/getActivityDiscussed'); ?>/"+str,true);
            xmlhttp.setRequestHeader("Cache-Control", "no-cache");
            xmlhttp.setRequestHeader("Pragma", "no-cache");
            xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
            xmlhttp.send();
 }

此 ajax 调用在 IE-9 中不起作用。

我已经使用以下代码清除了缓存:

xmlhttp.setRequestHeader("Cache-Control", "no-cache");
xmlhttp.setRequestHeader("Pragma", "no-cache");
xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");

但我必须为每个 ajax 请求使用这些代码。

有没有办法全局禁用缓存?

提前致谢

您可能需要为每个请求添加一些随机数或字符串来解决此问题。

检查此 link.. 会有帮助。 Prevent browser caching of jQuery AJAX call result

据我所知,JavaScript 中没有这样的机制。你必须定期重复它,否则你可以在函数中使用这些代码并在你想要的地方调用函数。

function clearBrowserCacheForAjax()
{
   xmlhttp.setRequestHeader("Cache-Control", "no-cache");
   xmlhttp.setRequestHeader("Pragma", "no-cache");
   xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
}

在每个函数中都可以调用上面的函数。

function getActivityDiscussed(str,id)
{
            var xmlhttp;    
            if (str=="")
            {
              document.getElementById("list_bottom").innerHTML="";
              return;
            }
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
              {
                document.getElementById("list_bottom"+id).innerHTML=xmlhttp.responseText;
              }
            }
            xmlhttp.open("GET","<?php echo base_url($client_url.'communications/getActivityDiscussed'); ?>/"+str,true);
            clearBrowserCacheForAjax();
            xmlhttp.send();
 }