javascript - masalah pengoptimuman nodejs
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:44:59
0
5
470

Jika saya perlu menggunakan nodejs untuk meminta berbilang antara muka java dan akhirnya mendapatkan semua data untuk memaparkan halaman, bagaimana saya boleh meningkatkan kelajuan
Saya pernah begini

 //请求接口
  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);  //渲染页面
                })
            })
        })
    })

Ini sangat perlahan. Kemudian saya memetik 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); //渲染页面
    });

Ini menjadikan kelajuan lebih pantas, tetapi ia masih sangat perlahan

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

membalas semua(5)
左手右手慢动作

Kaedah pertama adalah perlahan kerana masa yang diambil ialah jumlah semua masa permintaan; proses pemaparan atau Proses pemprosesan permintaan sebelah pelayan telah dioptimumkan

Ty80

Anda hanya boleh menggunakan sesuatu seperti promise.all Jika ada kaedah yang baik, sila beritahu saya.

给我你的怀抱

Masalah ini sebenarnya adalah masalah strategi rendering Sebenarnya, tidak perlu melengkapkan semua permintaan data dalam Node sebelum menghantarnya kepada klien.

Anda boleh meletakkan sepenuhnya langkah meminta data ini pada klien, dan kemudian pelanggan menggunakan ajax untuk mendapatkan data. Ini menghapuskan keperluan untuk menunggu semua data diperolehi.

巴扎黑

Anda boleh menggunakan janji baharu dalam sintaks es6 untuk menyelesaikan situasi lubang hitam panggil balik anda secara khusus.

大家讲道理

Saya rasa saya perlu mempertimbangkan dua perkara Pertama, adakah anda bergantung pada yang sebelumnya untuk segala-galanya? Adakah mungkin untuk menghantar beberapa permintaan secara selari? Kedua, adakah mungkin untuk membezakan keutamaan dan membiarkan pelanggan menghantar permintaan Lagipun, tetingkap pelanggan hanya begitu besar, dan hubungan antara keutamaan akan menjadi jelas permintaan, yang penting dihantar dahulu Pengguna akan melihatnya apabila memuatkan skrin pertama, dan kemudian menyiarkan perkara berikut;

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan