获取breeze元数据在Chrome中很慢,在IE中很快

获取breeze元数据在Chrome中很慢,在IE中很快,breeze,Breeze,在Chrome中,为我的模型获取元数据的速度似乎非常慢,但在IE中却非常快 我的dbcontext包含大约35个实体,其中包含大量导航属性,我添加的每个实体都会增加延迟。目前,延迟大约为20秒,在查询返回原始元数据后开始,完全是CPU在大量工作,内存使用保持稳定。我有一个i7处理器和充足的内存 我知道javascript引擎在这两种浏览器中的配置方式存在差异,chrome javascript JIT编译器针对浮点运算进行了优化(这就是为什么webgl图形在chrome中的速度比IE快一千倍)—

在Chrome中,为我的模型获取元数据的速度似乎非常慢,但在IE中却非常快

我的dbcontext包含大约35个实体,其中包含大量导航属性,我添加的每个实体都会增加延迟。目前,延迟大约为20秒,在查询返回原始元数据后开始,完全是CPU在大量工作,内存使用保持稳定。我有一个i7处理器和充足的内存

我知道javascript引擎在这两种浏览器中的配置方式存在差异,chrome javascript JIT编译器针对浮点运算进行了优化(这就是为什么webgl图形在chrome中的速度比IE快一千倍)——这是否会对fetchMetaData必须做的工作产生影响

还有人注意到这种缓慢吗?可能是我的关系不对吗?一旦延迟结束,一切都会正常进行,所以我怀疑人际关系是否会成为问题。

Dmitri,
我无法重新编程,所以我想知道是否还涉及其他内容。您也尝试过Firefox吗?

找到了问题和解决方案

谢谢你花时间看这个,在你的回复之后,我决定把整个项目剥离到最基本的部分,在那里我可以重现问题并寻找任何干扰

这是一个较老的项目,我在其中实现了Breeze。该项目使用标准的jquery post/get方法从MVC获取数据,由于从MVC发布和接收json数据时日期和时间一直是一个问题,我在启动脚本中有以下代码:

    // Add datafilter to jQuery ajax calls to translate dates
$.ajaxSettings.dataFilter = function (data, type) {
    //if (type === 'json') {
    // convert things that look like Dates into a UTC Date string and completely replace them.
    data = data.replace(/(.*?")(\\\/Date\([0-9\-]+\)\\\/)(")/g,
                    function (fullMatch, $1, $2, $3) {
                        try {
                            return $1 + new Date(parseInt($2.substr(7))) + $3;
                        }
                        catch (e) { }
                        // something miserable happened, just return the original string
                        return $1 + $2 + $3;
                    });
    //}
    return data;
};

删除此代码后(因为breeze的日期正确),一切正常。这种类型的代码可能在其他需要正确处理日期的旧项目中很常见,我知道我从中获得了上述代码片段,我相信其他人也会遇到这个问题。

顺便说一句,在最新版本上进行了测试