在Node.js“global”变量中存储100多个对象

时间:2015-07-27 20:09:32

标签: javascript node.js

我的配置设置是动态的,所以我决定将它们保存在数据库中。这些配置按public ActionResult ControlPanel() { ViewBag.Message = TempData["Message"] == null ? "" : TempData["Message"].ToString(); //using (var db = new ProductContext()) //{ // var categories = from c in db.Categories // select c; // categories = categories.OrderByDescending(c => c.isActive); // var model = new AdminModel // { // Categories = categories.ToList(), // Products = db.Products.ToList(), // RegisterUsers = db.RegisterViewModels.ToList() // }; // return View(model); //} var model = new AdminModel(); using (var db = new ProductContext()) { var categories = from c in db.Categories select c; categories = categories.OrderByDescending(c => c.isActive); model.Categories = categories.ToList(); model.Products = db.Products.ToList(); model.Brochures = db.Brochures.ToList(); }; 分类,因此我希望在服务器启动后通过查询数据库来引导配置,因为必须为每个请求配置。所以,我将配置保存在一个全局对象中。

我的问题是:

  1. 这是可行的方法吗?
  2. 有没有办法引导配置?
  3. 存储此对象会导致内存泄漏吗?
  4. 将配置存储在全局中需要多少空间?
  5. 全局对象是否会被垃圾收集?

1 个答案:

答案 0 :(得分:4)

  1. 绝对可行。但是,我不知道你的申请的背景,所以我不能说它是否会好。
  2. 要加载配置,您必须先连接到数据库并在尝试访问之前执行加载。这样做取决于您的应用程序,但在放弃对应用程序的控制之前,您始终可以连接到数据库。然后,选择全局名称来存储它并将其存储在全局中是一件简单的事。
  3. 否。除非你不加控制地一遍又一遍地创建对象,并且不知何故从某个范围内的某个对象引用它们,这在没有注意的情况下是非常难以做到的。
  4. 诚实?不多。 node.js的标准库可能比您的配置大得多。地狱,可能你用来连接数据库以获得配置的库会比你的配置更大。
  5. 否。只要您能够访问它就可以了。 Node.JS使用经过大量修改的标记和清除垃圾收集器;这意味着Node.JS有一个永远不会垃圾收集的对象列表("根"),并标记它可以从这些对象访问的每个对象。收集并释放任何未标记的内容。全局命名空间是这些根之一,意味着不收集全局命名空间引用的任何内容。
  6. 希望有所帮助。