javascript - nodejs 優化問題
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:44:59
0
5
474

如果我需要用nodejs 請求多個java的介面最後得到所有資料渲染頁面,怎麼樣能提高速度
之前我是這樣的

 //请求接口
  http.tp(options,function(error,response,tags){
        http.tp(options1,function(error,response,topic){
            http.tp(follow,function(error,response,follow){
                http.tp(options2,function(error,response,topicRCMD){
                    data={
                        follow:follow,
                        topicRCMD:topicRCMD,
                        tags:tags,
                        topicHot:topic,
                    }
                    opt.render(data);  //渲染页面
                })
            })
        })
    })

這樣速度很慢。然後我引用async

return async.parallel({
        //我关注的人
        follow:function(callback){
            http.tp(follow,function(error, response, follow){
                callback(null, follow);
            })
        },
        // 获取标签
        tags:function(callback){
            http.tp(options,function(error, response, tags){
                callback(null, tags);
            })
        },
        // 获取热门话题
        topicHot:function(callback){
            http.tp(options1,function(error, response, topicHot){
                callback(null, topicHot);
            })
        },
        // 获取推荐话题列表
        topicRCMD:function(callback){
            http.tp(options2,function(error, response, topicRCMD){
                callback(null, topicRCMD);
            })
        }
    },
    function(err, results){
        console.log('ssss:',results);
        opt.render(results); //渲染页面
    });

這樣子速度變快了點,但還是很慢,請問這個有什麼好的解決辦法嗎

过去多啦不再A梦
过去多啦不再A梦

全部回覆(5)
左手右手慢动作

第一個方法慢是因為需要花費的時間是所有請求時間的總和;第二種方法只需要花費最長的那個請求需要的時間,自然會快一些
再想優化了就需要在渲染過程或者伺服器端請求處理過程上優化了

Ty80

只能用promise.all類似的了吧,如果有什麼好的方法可以告訴我。

给我你的怀抱

這個問題其實是渲染的策略問題,其實不需要在Node把所有資料請求完全後再傳送到客戶端。

完全可以把這個請求資料的步驟放到客戶端,然後客戶端ajax取得資料。這就不需要等所有資料取得完。

巴扎黑

可以用es6語法中新增的promise,專門解決你這種回調黑洞的狀況。

大家讲道理

感覺需要考慮兩點,第一,你所有的都是依賴前一個嗎?有沒有可能並行發一些請求;第二,有沒有可能分清主次,讓客戶端去發請求,畢竟客戶端視窗就那麼大,主次關係會很明確,客戶端發請求,先發重要的,使用者首屏載入會看到的,再發後面的;

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板