FORCE HttpRequest отключить кеш без открытия Chrome devtools - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть функция запроса 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();
}
}

Работает в Chrome без devtools открывается, когда запросы отправляются не часто, но в части кода, где эта функция вызывается 10 раз в секунду, она работает только если devtools открыт. Как это исправить?

Буквально перед тем, как нажать кнопку ответа на вопрос, я подумал: а что, если вместо времени использовать случайное число?

1 Ответ

0 голосов
/ 29 апреля 2020

К сожалению, в моем случае проблема не была в 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...