未打开Chrome devtools的情况下,强制HttpRequest禁用缓存

问题描述 投票:0回答:1

我具有Http请求功能,该功能在iOS,Android,桌面Opera上完美运行,但在Chrome浏览器中,仅在打开devtools时才有效。实际上,以前,相同的问题出在IE中,但我修复了向HTTP请求添加参数的问题。当前功能如下:

function requestf(path, run)
{
{
var request = new XMLHttpRequest();
request.open('GET', path+'&cprv='+(new Date().getTime()), true); 
request.setRequestHeader('cache-control', 'no-cache, must-revalidate, post-check=0, pre-check=0');
request.setRequestHeader('expires', 'Thu, 19 Nov 1981 08:52:00 GMT');
request.setRequestHeader('pragma', 'no-cache');

request.addEventListener('readystatechange' ,function()
{
if ((request.readyState==4) && (request.status==200))
run( request.responseText);

}
);

request.send();
}
}

它在不频繁发送请求的情况下不打开devtools的情况下在Chrome中工作,但是在该函数每秒调用10次的部分代码中,只有在打开devtools时它才起作用。如何解决?

从字面上看,我想问问职位问题之前,如果使用随机数代替时间怎么办?

javascript google-chrome xmlhttprequest cache-control
1个回答
0
投票

[不幸的是,在我的情况下,问题通常不在xhr上,但是,如果您以@Pointy提到的频率发送高频率的请求,那么可能对您有所帮助,它仅获得一次时间值,并且每次仅增加一次时间值请求调用:

var cache_date = new Date().getTime();

function request(path, callback)
{
cache_date++;

var request = new XMLHttpRequest();
request.open('GET', path+'&cprv='+cache_date, true); 
request.setRequestHeader('cache-control', 'no-cache, must-revalidate, post-check=0, pre-check=0');
request.setRequestHeader('expires', 'Thu, 19 Nov 1981 08:52:00 GMT');
request.setRequestHeader('pragma', 'no-cache');

request.addEventListener('readystatechange' ,function()
{
if ((request.readyState == 4) && (request.status == 200))
callback( request.responseText);
}
);

request.send();
}
© www.soinside.com 2019 - 2024. All rights reserved.