1

我目前正在努力将使用自制界面库制作的 Web 应用程序转变为标准的 ExtJS MVC 应用程序。一切正常,除了 Ajax 请求在页面启动时延迟较高。事实上,虽然我调用的文件与以前没有什么不同,但有时我必须比以前多等待 3 到 6 秒才能得到响应。

为了缩小我的调查范围,我更改了代码以返回静态数据(一个简单的 json 字符串),从而消除了数据库问题的选项。此外,我注意到在 Google Chrome(“网络”面板)中使用“Replay XHR”几乎可以立即得到响应。

我想在这个话题上很难提供帮助,但希望有人已经遇到过这种问题,并且可以分享一些关于在哪里调查的建议。

观察

  • 按延迟排序的请求(间隔约为 500 毫秒):

    在此处输入图像描述

  • 按开始时间排序的请求:

    在此处输入图像描述

4

1 回答 1

0

我尝试过加载一个又一个商店。这样做,我将所有商店的加载时间减少到大约半秒。不知道是不是每个浏览器都会出现这个问题,我改天查一下。这是补丁(不要忘记删除autoLoad:true到所有商店):

// filters stores to load on startup
// store.self.getName() returns "AppName.store.MyStore"

var stores = Ext.StoreManager.filterBy(function (store) {
    return Ext.Array.indexOf(
        ['Store1', 'Store3', 'Store5'], 
        store.self.getName().split('.').pop()
    ) !== -1;
});

// loads one store after another

(function () {
    var callee = arguments.callee,
        store = stores.getAt(0);
    store.load({
        scope: this,
        callback: function () {
            stores.remove(store);
            if (stores.getCount()) {
                callee.call(this);
            } else {
                // all stores are now loaded
            }
        }
    });
}).call(this);
于 2013-02-11T13:36:10.317 回答