zoukankan      html  css  js  c++  java
  • 利用nodejs模块缓存机制创建“全局变量”

    在《深入浅出nodejs》有这样一段(有部分增减):

    1、nodejs引入模块分四个步骤

    • 路径分析
    • 文件定位
    • 编译执行
    • 加入内存

    2、核心模块部分在node源代码的编译过程中就编译成了二级制文件,在node启动时就直接加载如内存,所以这部分模块引入时,前三步省略,直接加入。

    3、nodejs的模块加载和浏览器js加载一样都有缓存机制,不同的是,浏览器仅仅缓存文件,而nodejs缓存的是编译和执行后的对象(缓存内存)。

    基于以上三点:我们可以编写一个模块,用来记录长期存在的变量。例如:我可以编写一个记录接口访问数的模块:
    1 var count = {}; // 因模块是封闭的,这里实际上借用了js闭包的概念
    2 exports.count = function(name){
    3      if(count[name]){
    4           count[name]++;
    5      }else{
    6           count[name] = 1;
    7      }
    8      console.log(name + '被访问了' + count[name] + '次。');
    9 };
     
    我们在路由里这样引用:
    1 var count = require('count');
    2  
    3 export.index = function(req, res){
    4      count('index');
    5 };

    以上便完成了对接口调用数的统计,但这只是个demo,因为数据存储在内存,服务器重启后便会清空。真正的计数器一定是要结合持久化存储器的。

  • 相关阅读:
    设计模式-代理模式
    设计模式-桥接模式
    设计模式-组合模式
    设计模式-享元模式
    设计模式-适配器模式
    设计模式-装饰器模式
    设计模式-外观模式
    redis日志格式
    Linux下的文件切割和文件合并
    Windows server 服务器的端口突然远程连不上了,但是可以远程连接,怎么回事?
  • 原文地址:https://www.cnblogs.com/tyhmj/p/3799039.html
Copyright © 2011-2022 走看看