范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

让你的Node。jsWeb应用程序更快的10个技巧

  由于其事件驱动和异步特性,Node.js 已经飞速发展。但是,在现代网络中,仅仅快速是不够的。如果您计划使用 Node.js 开发您的下一个 Web 应用程序,您必须采取一切可能的步骤来确保您的应用程序比平时更快。本文介绍了 10 个技巧,这些技巧可以极大地加快基于 Node 的 Web 应用程序的速度。所以,让我们一一看看。 1.并行运行
  在构建 Web 应用程序时,有时您需要进行多个内部 API 调用来获取各种数据。例如,考虑一个用户仪表板。在渲染仪表板时,您可以执行以下假设调用: 用户个人资料 –  getUserProfile()  。 最近的活动——  getRecentActivity()  。 订阅 -  getSubscriptions()  。 通知 –  getNotifications()  。
  为了检索这些详细信息,您可以为每个函数创建一个单独的中间件并附加到仪表板路由。但是这种方法的问题是一个函数必须等待前一个函数完成。另一种选择是并行执行这些调用。
  众所周知,由于 Node.js 的异步特性,它在并行运行多个函数方面非常高效。我们应该利用这一点。由于我上面提到的功能不相互依赖,我们可以并行运行它们。这将减少中间件的数量并大大提高速度。
  为了使事情并行化,我们可以使用 async.js,这是一个有助于驯服异步 JavaScript 的 Node 模块。这是一个片段,展示了如何使用 async.js 并行运行不同的函数: function runInParallel() {   async.parallel([     getUserProfile,     getRecentActivity,     getSubscriptions,     getNotifications   ], function(err, results) {     //This callback runs when all the functions complete   }); }
  如果您想了解有关 async.js 的更多信息,请务必查看该项目的GitHub页面。 2. 异步
  按照设计,Node.js 是单线程的。由于这个事实,同步代码可能会锁定整个应用程序。例如,大多数文件系统 API 都有其同步对应物。以下代码段显示了如何同步和异步完成文件读取操作: // Asynchronous fs.readFile("file.txt", function(err, buffer) {   var content = buffer.toString(); });  // Synchronous var content = fs.readFileSync("file.txt").toString();
  但是如果您执行长时间运行和阻塞操作,您的主线程将被阻塞,直到操作完成。这会大大降低您的应用程序的性能。因此,请确保您始终在代码中使用异步 API,至少在性能关键部分。在选择第三方模块时也要小心。即使您采取一切预防措施来避免同步代码,外部库也可能会进行同步调用,从而影响您的应用程序的性能。 3.使用缓存
  如果您正在获取一些不经常更改的数据,您可以将其缓存以提高性能。例如,使用以下代码片段获取最新帖子以显示在视图上: var router = express.Router();  router.route("/latestPosts").get(function(req, res) {   Post.getLatest(function(err, posts) {     if (err) {       throw err;     }      res.render("posts", { posts: posts });   }); });
  如果你发博文不是太频繁,可以缓存posts数组,间隔后清空缓存。例如,我们可以使用redis模块来实现这一点。为此,您需要在服务器上安装 Redis。然后您可以使用调用的客户端node_redis来存储键/值对。以下片段显示了我们如何缓存帖子: var redis = require("redis"),     client = redis.createClient(null, null, { detect_buffers: true }),     router = express.Router();  router.route("/latestPosts").get(function(req,res){   client.get("posts", function (err, posts) {     if (posts) {       return res.render("posts", { posts: JSON.parse(posts) });     }      Post.getLatest(function(err, posts) {       if (err) {         throw err;       }        client.set("posts", JSON.stringify(posts));           res.render("posts", { posts: posts });     });   }); });
  因此,首先我们检查帖子是否存在于 Redis 缓存中。如果是这样,我们从缓存中传递posts数组。否则,我们从数据库中检索内容,然后将其缓存。此外,在一段时间后,我们可以清除 Redis 缓存,以便获取新内容。 4.使用gzip压缩
  开启 gzip 压缩会极大地影响 webapp 的性能。当与 gzip 兼容的浏览器请求某些资源时,服务器可以在将响应发送到浏览器之前对其进行压缩。如果您不使用 gzip 压缩静态资源,浏览器可能需要更长时间才能获取它。
  在 Express 应用程序中,您可以使用内置的express.static()中间件来提供静态内容。此外,您可以使用compression中间件来压缩和提供静态内容。这是一个显示如何执行此操作的片段: var compression = require("compression");  app.use(compression()); //use compression  app.use(express.static(path.join(__dirname, "public")));5. 尽可能使用客户端渲染
  随着 AngularJS、Ember、Meteor 等许多强大的客户端 MVC/MVVM 框架的出现,创建单页应用程序变得非常容易。基本上,您只需公开向客户端发送 JSON 响应的 API,而不是在服务器端呈现。在客户端,您可以使用框架来使用 JSON 并在 UI 上显示。从服务器发送 JSON 可以节省带宽,从而提高速度,因为您不会在每个请求中发送布局标记。相反,您只需发送纯 JSON,然后在客户端呈现。
  看看我的这个教程,它描述了如何使用 Express 4 公开 RESTful API。我还写了另一个教程,展示了如何使用 AngularJS 与这些 API 交互。 6.不要在会话中存储太多
  在典型的 Express Web 应用程序中,会话数据默认存储在内存中。当您在会话中存储太多数据时,会增加服务器的大量开销。因此,您可以切换到其他类型的存储来保留会话数据,或者尝试最小化会话中存储的数据量。
  例如,当用户登录到您的应用程序时,您可以只将他们存储id在会话中,而不是存储整个对象。随后,对于每个请求,您都可以从id. 您可能还想使用 MongoDB 或 Redis 来存储会话数据。 7.优化您的查询
  假设您有一个博客应用程序,它在主页上显示最新帖子。你可能会写这样的东西来使用 Mongoose 获取数据: Post.find().limit(10).exec(function(err, posts) {   //send posts to client });
  但问题是find()Mongoose 中的函数会获取对象的所有字段,并且对象中可能有几个字段在Post主页上不需要。例如,comments是一个这样的字段,它包含特定帖子的一组评论。由于我们没有显示评论,我们可能会在获取时将其排除。这肯定会提高速度。我们可以这样优化上面的查询: Post.find().limit(10).exclude("comments").exec(function(err, posts) {   //send posts to client });8. 使用标准 V8 函数
  并非所有浏览器都支持对集合进行不同的操作,例如map、reduce和。forEach为了克服浏览器兼容性问题,我们一直在前端使用一些客户端库。但是使用 Node.js,您可以确切地知道 Google 的 V8 JavaScript 引擎支持哪些操作。因此,您可以直接使用这些内置函数在服务器端操作集合。 9.在Node前面使用nginx
  Nginx是一个小巧轻便的 Web 服务器,可用于减少 Node.js 服务器上的负载。您可以配置 nginx 以提供静态内容,而不是从 Node 提供静态文件。您还可以设置 nginx 以使用 gzip 压缩响应,以便整体响应大小较小。因此,如果您正在运行生产应用程序,您可能希望使用 nginx 来提高速度。 10. 缩小和连接 JavaScript
  最后,通过将多个 JS 文件压缩并合并为一个,可以极大地提高您的 Web 应用程序速度。当浏览器遇到一个

最新消息郑州3号线二期工程轨道安装开始招标了郑州市轨道交通3号线二期工程轨道安装招标公告1。招标条件郑州市轨道交通3号线二期工程轨道安装,已由豫发改基础2019819号文批准建设,招标人为郑州地铁集团有限公司,建设资金来自政应该在知足中过好你的每一天人生,总是在经历过后才懂得,失去以后才珍惜,错过之后才懊悔,对比之后才明白。曾经车水马龙,人群熙熙攘攘,摩肩擦踵之间,只觉一切是寻常。仿佛生活就该如此模样,以为岁月就会一直如此静好方言,请别离我们而去十里不同音,百里不同俗,在过去人挑肩扛的年代里,信息和交通都不发达,我们的小山村相对比较封闭,人们在长期的生产生活中,就逐渐形成了自己独特的文化。在亘古绵长的岁月里,这种文化自然地这样回你微信的人,最值得你深爱人生最幸运的事情之一,就是遇到一个值得深爱的人,即便你们最后没有在一起,当你回想起这个人的时候,你心里更多的是幸福和惋惜。幸福源于曾经的回忆,惋惜这样一个人,没能陪你走到最后。其实电子商务对物流的影响近几年来,随着电子商务环境的改善以及电子商务所具备的巨大优势,电子商务受到了政府企业界的高度重视,纷纷以不同的形式介人电子商务活动中,使电子商务在短短的几年中以惊人的速度在发展。在科技加码,实力俱增纽恩泰商用变频热水新品发布数据显示,2021年上半年,商用热泵热水市场规模为8。68亿元,同比增长37。7。由于弥补了去年同期工程项目停滞带来的空缺,商用热泵热水产品的增长领先于其他产品。可以预见,商用热泵当风轻借力,一举入高空,纽恩泰3000终极实训中心刮起工匠之风宝剑锋从磨砺出,更强调安装技艺的空气源热泵两联供系统,将三分产品,七分安装的积极意义进一步凸显。在消费升级的时代窗口下,如何保障用户的舒适生活,正成为暖通行业的重要课题,走在市场发万名暖通技工实训班第二期落幕,纽恩泰持续塑行业工匠精神纽恩泰作为空气能行业领军品牌,致力于推进两联供市场健康发展,为培养暖通人才,以匠心成就精品工程,在3月末举行的万名暖通技工实训班第一期的圆满落幕可谓是做了漂亮的开门红,接踵而至的4顺势而为聚势而上,纽恩泰以实际行动助推两联供行业发展最近几年,两联供机组始终保持高速增长的态势。根据艾肯网统计,2021上半年,两联供机组的整体市场容量约为14亿元,历史上首次半年度总量超过10亿元,同比2020上半年增长55。6,如何打造城镇集中供暖新天地?河北赵县给你答案蓝天保卫战的阶段性胜利,再一次证明了空气源热泵用于北方清洁采暖改造的积极意义。建立在北方户式采暖改造成功经验的基础上,面对如今规模更大,范围更广的城镇集中式供暖区域,空气源热泵产品纽恩泰连续三年荣获广东省守合同重信用企业称号人无信不立,业无信不兴,守合同重信用是企业可持续发展的基石,也是对客户最好的承诺。只有以客户为中心,以诚信为根本,专注为客户创造价值,持续追求客户满意,企业才能长盛不衰,永远立于不
中国电科积极参与SKA大科学工程全球建设合作8月31日,国家科技部在京组织召开中国平方公里阵列射电望远镜(SKA)启动大会。会议通报了中国参与SKA各项工作推进情况,并发布了中国SKA白皮书,介绍了中国参与SKA的发展理念和越来越多的家庭都用这种燃气灶,方便又实用,更省燃气费在以前,我们不管是自己家还是去朋友家,最常见的都是那种明火燃气灶,这种燃气灶用久了会堵孔,锅也会被烧黑,还不能充分燃烧燃气,每次开关要浪费不少燃气。直到前段时间,我去舅舅家拜访,看RedmibookPro体验总结可能是今年最良心的笔记本这次的RedmibookPro真的让我恍惚间又回到了小米笔记本Air和Pro首代发布的现场,又回来了,一切都回来了!6系航空级铝合金,高端CNC一体精雕工艺,170号精密陶瓷喷砂,一个芯片两个爹,10月怀胎vivo和三星生了从屏幕指纹升降摄像头全面屏再到人工智能Jovi,vivo一直是为大家制造惊喜的行家,昨天又有一个新的惊喜降临,第一次有着深深vivo烙印的芯片正式发布。它的名字叫Exynos980一部手机两个主摄,FindX3系列再定义旗舰影像新标准我们常说十年磨一剑,那么十年对于一个手机品牌而言到底意味着什么呢?OPPO最近就用一款全新的旗舰和大家诠释了OPPO的10年,它就是OPPOFindX3系列。这款手机有很多升级,影手机音量键还有这些作用,你知道吗?手机音量键是用来做什么的?很多人第一反应肯定是用来调节音量大小的,但其实音量键还有很多其它的功能,跟着小宁君来看看吧。1快捷静音开会或公开场合,忽然有人来电,不能接电话也不好挂电话达到国际先进水平!杭氧四类产品通过中国通用机械协会鉴定9月2223日,由杭氧膨胀机公司自主研制的氢气透平膨胀机组化工尾气透平膨胀机组与杭氧工装泵阀公司的轴承箱式高压多级低温离心泵液氢液氦低温阀门等四类产品通过中国通用机械工业协会鉴定,温州城发集团与正泰集团签订战略合作框架协议9月27日,温州市城市建设发展集团(以下简称温州城发集团)与正泰集团签署战略合作框架协议,标志着双方正式建立战略合作伙伴关系,发挥各自在项目产品技术平台和运营管理等方面的经验并充分机械工业2021年三季度经济运行情况分析与全年经济运行预测2021年9月24日,中国机械工业联合会专家委员会(以下简称专家委)在京召开了机械工业2021年三季度经济运行情况分析与全年经济运行预测会商会,中国机械联执行副会长专家委副主任陈斌中国能建与浪潮集团共商深化战略合作9月24日下午,中国能建党委书记董事长宋海良一行到浪潮集团有限公司考察交流。在浪潮集团党委书记董事长邹庆忠陪同下,宋海良参观了浪潮展厅人工智能研究院。双方就推进数字化转型,深化战略慧拓助力世界首个极寒环境无人矿卡编组项目通过工业验收9月15日,极寒型复杂气候环境露天煤矿无人驾驶卡车编组安全示范工程在国家能源集团宝日希勒露天煤矿分别通过中国煤炭工业协会组织的工业性示范运行安全评审和科技成果鉴定国家能源集团组织的