Javascript 使用TMDBAPI页面加载速度非常慢

Javascript 使用TMDBAPI页面加载速度非常慢,javascript,node.js,api,Javascript,Node.js,Api,因此,我尝试使用tmdb api获取流行电影和电视节目,然后我尝试获取它们的imdb id,但是页面在几秒钟内呈现太慢,我想知道是否有方法优化我的代码,或者问题是否出在api调用中 router.get('/',redirect,(req,res)=>{ const option={ url:"https://api.themoviedb.org/3/trending/movie/week?api_key=9bde952e56ff27d1016ff6144cbf27

因此,我尝试使用tmdb api获取流行电影和电视节目,然后我尝试获取它们的imdb id,但是页面在几秒钟内呈现太慢,我想知道是否有方法优化我的代码,或者问题是否出在api调用中

router.get('/',redirect,(req,res)=>{
    const option={
        url:"https://api.themoviedb.org/3/trending/movie/week?api_key=9bde952e56ff27d1016ff6144cbf27c9",
        json:true
    };
    const optiontv={
        url:"https://api.themoviedb.org/3/trending/tv/week?api_key=9bde952e56ff27d1016ff6144cbf27c9",
        json:true
    }
    request(option).then(resp=>{
        let trending_id=[];
        trending_id=resp.results.map((movie)=>{
            const optionid={
                url:`https://api.themoviedb.org/3/movie/${movie.id}/external_ids?api_key=9bde952e56ff27d1016ff6144cbf27c9`,
                json:true
            }
            return request(optionid).then(respid=>{
                return {id:respid.imdb_id,poster:`https://image.tmdb.org/t/p/w600_and_h900_bestv2${movie.poster_path}`};
            }).catch(err=>console.log(err));
        })
        request(optiontv).then(resptv=>{
            let trending_id_tv=[];
            trending_id_tv=resptv.results.map((tv)=>{
                const optionid_tv={
                    url:`https://api.themoviedb.org/3/tv/${tv.id}/external_ids?api_key=9bde952e56ff27d1016ff6144cbf27c9&language=en-US`,
                    json:true
                }
                return request(optionid_tv).then(respid_tv=>{
                    return {id:respid_tv.imdb_id,poster:`https://image.tmdb.org/t/p/w600_and_h900_bestv2${tv.poster_path}`};
                })
            });
            Promise.all(trending_id).then((values_movie)=>{
                Promise.all(trending_id_tv).then(values=>{
                    const user=req.session.name.split(' ')[0];
                    res.render('homepage',{name:user,imdbid_poster:values_movie,imdb_poster_tv:values});
                }).catch(err=>console.log(err));
            }).catch(err=>console.log(err));
        }).catch(err=>console.log(err));
    });
});
渲染页面有时最多需要5秒钟

GET /home 304 5820.419 ms - -
GET /public/stylesheets/bootstrap.min.css 304 4.617 ms - -
GET /public/stylesheets/mdb.min.css 304 4.719 ms - -
GET /public/stylesheets/header.css 304 4.955 ms - -
GET /public/stylesheets/footer.css 304 4.406 ms - -
GET /public/stylesheets/flickity.css 304 5.950 ms - -
GET /public/stylesheets/homepage.css 304 5.407 ms - -
GET /public/javascripts/homepage.js 304 2.590 ms - -
GET /public/javascripts/header.js 304 5.542 ms - -
GET /public/javascripts/flickity.pkgd.min.js 304 3.179 ms - -
GET /public/images/logo.png 304 3.955 ms - -
GET /public/images/Recify%20background6.jpg 304 2.729 ms - -
GET /public/images/FavIcon.png 200 2.226 ms - 99291

如果您检测外部请求,可能会有所帮助。但是,您无法让外部服务更快响应


您可以做的是在服务器上添加一些缓存。您引用的数据不太可能经常更改。即使你只缓存了15分钟的电影趋势,这几乎肯定会有帮助。

很抱歉,我是一个初学者,你能简化我应该做的事情吗?注意:我在本地主机上运行应用程序,而不是总是检索实时数据。开始将结果存储到内存或redis之类的东西中,然后先检查一下向imdb发出请求。