【问题标题】:FORCE HttpRequest disable cache without Chrome devtools openedFORCE HttpRequest 在没有打开 Chrome 开发工具的情况下禁用缓存
【发布时间】:2020-04-30 02:42:55
【问题描述】:

我有 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 时才有效。如何解决?

在按下发布问题按钮之前,我想知道,如果使用随机数而不是时间呢?

【问题讨论】:

  • 您可以获取一次时间,然后在每个请求中加 1。
  • @Pointy,好像我试过了(但是-1而不是+1,这实际上很愚蠢)
  • 看来,我的问题不是因为http请求

标签: javascript google-chrome xmlhttprequest cache-control


【解决方案1】:

不幸的是,在我的情况下,问题一般不在 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 2021-06-10
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多