javascript - problème d'optimisation de nodejs
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:44:59
0
5
478

Si je dois utiliser nodejs pour demander plusieurs interfaces Java et enfin obtenir toutes les données pour afficher la page, comment puis-je améliorer la vitesse
J'étais comme ça avant

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

C'est très lent. Ensuite, j'ai cité 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); //渲染页面
    });

Cela rend la vitesse un peu plus rapide, mais elle reste très lente. Existe-t-il une bonne solution à cela

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

répondre à tous(5)
左手右手慢动作

La première méthode est lente car le temps qu'elle prend est la somme de tous les temps de requête ; la deuxième méthode ne prend que le temps de la requête la plus longue, ce qui sera naturellement plus rapide
Si vous souhaitez l'optimiser, vous devez le faire en le processus de rendu ou Le processus de traitement des requêtes côté serveur a été optimisé

Ty80

Vous ne pouvez utiliser que quelque chose comme promise.all. S'il existe une bonne méthode, dites-le-moi.

给我你的怀抱

Ce problème est en fait un problème de stratégie de rendu. En fait, il n'est pas nécessaire de terminer toutes les demandes de données dans Node avant de les envoyer au client.

Vous pouvez complètement confier cette étape de demande de données au client, puis le client utilise ajax pour obtenir les données. Cela élimine le besoin d’attendre que toutes les données soient obtenues.

巴扎黑

Vous pouvez utiliser la nouvelle promesse dans la syntaxe es6 pour résoudre spécifiquement votre situation de trou noir de rappel.

大家讲道理

J'ai l'impression que je dois considérer deux points. Premièrement, comptez-vous sur le précédent pour tout ? Est-il possible d'envoyer certaines requêtes en parallèle ? Deuxièmement, est-il possible de distinguer les priorités et de laisser le client envoyer des requêtes ? Après tout, la fenêtre du client n'est pas grande et la relation entre les priorités sera claire lorsque le client envoie. les demandes, les plus importantes sont envoyées en premier. Les utilisateurs le verront lors du chargement du premier écran, puis publieront les suivantes

 ;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal