jquery - $ajax 请求待处理 - chrome 缓存问题?

标签 jquery ajax google-chrome webkit cross-domain

请同时查看底部的我的更新

我在 Chrome 中执行跨域 jQuery.ajax GET REQUEST 时确实遇到一些问题。

预战的等待时间非常长(长达 20 秒),但在 Firefox 中运行良好。

我尝试了不同的技巧(例如启用异步),但我无法做到这一点。响应是一个 json 对象数组,并且不是很大(只有几个字节)。

问题似乎仅出现在第一次通话时。我做了一个再次执行请求的函数。它由成功处理程序执行。在第一次延迟 12 秒后,请求正常执行。

我已经尝试过不同版本的 jQuery(因为我是第一次使用 2.0.3)。

我登录了服务器。正如想象的那样,他的 OPTION 请求在长达 20 秒的时间内都没有执行。不存在服务器问题。服务器根据延迟准确识别命令并执行 GET 方法。

对于 2014-01-11 14:59:00 加载的页面,我的日志输出如下:

2014-01-11 14:59:14 - log.txt - "OPTIONS /unit/IO/*?_=1389452340572 HTTP/1.1" 200 -
2014-01-11 14:59:14 - log.txt - "GET /unit/IO/*?_=1389452340572 HTTP/1.1" 200 -
2014-01-11 14:59:14 - log.txt - "OPTIONS /unit/IO/*?_=1389452340573 HTTP/1.1" 200 -
2014-01-11 14:59:14 - log.txt - "GET /unit/IO/*?_=1389452340573 HTTP/1.1" 200 -

这是我的 ajax 调用:

$.ajax({
url: <<crossdomain>>,
type: 'GET',
contentType:'application/json',
async:true,
    cache:false,
beforeSend: function (request)
    {
    request.setRequestHeader("Authorization", 'Basic ' + encodedData);
},         
success: function(response) {
        alert(response)
}
});

请求 header (Chrome):

Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Access-Control-Request-Headers:accept, authorization, content-type
Access-Control-Request-Method:GET
Cache-Control:max-age=0
Connection:keep-alive
DNT:1
Host:<<crossdomain>>
Origin:<<thisdomain>>
Referer:<<directpathonthisdomain>>
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36

响应 header (Chrome):

Access-Control-Allow-Headers:Authorization
Access-Control-Allow-Headers:Accept
Access-Control-Allow-Headers:Content-Type
Access-Control-Allow-Headers:Accept-Language
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Type:application/json
Date:Sat, 11 Jan 2014 13:28:32 GMT
Server:Python3.2

这是第一次调用的网络流量:

Chrome:

选项

DNS Lookup: 0 ms
Connecting: 3 ms
**Waiting: 17.44s**
Receiving 2 ms

获取

DNS Lookup: 0 ms
Connecting: 2 ms
Sending: 0 ms
Waiting: 46 ms
Receiving 1 ms

为了比较 Firefox 日志:

选项

DNS Lookup: 0 ms
Waiting: 10 ms
Receiving 5 ms

获取

DNS Lookup: 0 ms
Waiting: 41 ms
Receiving 3 ms

编辑: 如果我直接打开 html 文件 (file:///) 并且不在本地/远程服务器上托管,则没有问题。

编辑2: 它在 Chrome 隐身模式下工作 - 可能是缓存问题?

最佳答案

我也遇到了同样的问题。在 Chrome 高级设置中禁用“预测网络操作以提高页面加载性能”选项后,延迟就消失了。

关于jquery - $ajax 请求待处理 - chrome 缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063909/

相关文章:

javascript - 突出显示表格行中的最近日期

javascript - 通过事件处理程序将参数从一个函数发送到另一个函数

google-chrome - 创建 WebGL 上下文时出错。三个js Chrome ?

javascript - Chrome 扩展麦克风捕获

javascript - 检查 formdata 对象键是否存在

javascript - JS onload - 控制列表 - chrome 中多个视频的 nodownload(仅适用于第一个视频)

Jquery - 更改页面加载时触发的事件

javascript - jquery取消绑定(bind)点击不起作用

javascript - 为什么 .active() 不能使用 typeahead

javascript - 更改 downloadurl() 以返回 xml