$ ajax请求待定 - chrome缓存问题?

use*_*132 4 ajax jquery webkit google-chrome cors

还请在底部查看我的更新

我在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 -
Run Code Online (Sandbox Code Playgroud)

这是我的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)
}
});
Run Code Online (Sandbox Code Playgroud)

请求标头(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
Run Code Online (Sandbox Code Playgroud)

响应标头(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
Run Code Online (Sandbox Code Playgroud)

这是第一次通话的网络流量:

铬:

选项

DNS Lookup: 0 ms
Connecting: 3 ms
**Waiting: 17.44s**
Receiving 2 ms
Run Code Online (Sandbox Code Playgroud)

得到

DNS Lookup: 0 ms
Connecting: 2 ms
Sending: 0 ms
Waiting: 46 ms
Receiving 1 ms
Run Code Online (Sandbox Code Playgroud)

为了比较Firefox日志:

选项

DNS Lookup: 0 ms
Waiting: 10 ms
Receiving 5 ms
Run Code Online (Sandbox Code Playgroud)

得到

DNS Lookup: 0 ms
Waiting: 41 ms
Receiving 3 ms
Run Code Online (Sandbox Code Playgroud)

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

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

小智 6

我有同样的问题.在Chrome的高级设置中禁用"预测网络操作以提高网页加载效果"选项后,延迟消失了.


gus*_*sen 0

也许您可以将下一个标头添加到您的 ajax 请求中。

headers: {
    "Cache-Control" : "no-cache, no-store, must-revalidate",
    "Pragma": "no-cache",
    "Expires", "0"
}
Run Code Online (Sandbox Code Playgroud)