Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

NoSQL与前端技术

  NoSQL也不是什么新鲜玩意儿了,但是很多人会被它的名字误导,会认为它是什么新型数据库。其实NoSQL不是一个数据库,而是一种数据存储模式。而且目前也没有什么权威的标准对NoSQL进行定义,所以它的概念很泛。我给它的定义是,只要不是使用SQL的数据存储模式都可以被归为NoSQL。比如一个网站,不使用任何SQL数据库,而是直接把数据作为文件直接存储在硬盘中。这也是一种NoSQL,在互联网刚刚兴起的时候,网站的访问不像现在这样以万来做单位的。那时候的网站对数据操作的速度需求不高,也没有很复杂的查询,所以即使作为文件储存也不会有什么问题。
  自从SQL流行起来之后,Web技术也在飞速发展,原来的NoSQL思想就渐渐被人们遗忘。终于SQL也遇到了一些技术瓶颈,所以NoSQL才重新被人们放到台面上来,而且它的袭来是变本加厉的。上个世纪,电脑的硬件支持是非常有限的,256M的内存就已经是不错的电脑了,所以传统的NoSQL只是使用硬盘来存储数据而已。但是当NoSQL把内存作为新的根据地而卷土从来时,一场新的技术革命就要到来了。
  HTML5的localStorage应该有所耳闻吧,其实说白了它就是一个简易的NoSQL。只不过没有其它引擎的支持,直接通过操作硬盘文件实现的,所以效率低,不适合做大量的读写。而且根据规定,localStorage只允许存放字符串数据,所以单独使用他也做不了什么事情。但是用它来存放JSON数据是没问题的。所以我们可以把数据以JSON的形式储存在localStorage中,当页面代码执行时把JSON它转换为JavaScript的对象直接使用这些数据。JavaScript的对象基本上都是key-value形式储存的,而且是储存在内存中的林结构,这就完全符合现代NoSQL的概念。我们只要从这个林结构的数据中遍历查找到相应的数据显示在页面上就可以了。而且JavaScript的数组对象提供了丰富的方法,很容易在其中查询到需要的数据。虽然效率不如SQL高,但是比起繁琐的查询语句,JavaScript的回调函数方式筛选数组要方便的多。这样把数据保留在客户端需要的时候做查询的方法,可以突破页面缓存的限制。假如有一个“最新文章”列表,在网站上有10个页面都有用到,那么即使开启了页面缓存,这个列表就要被加载十次。而使用这种技术只需要加载一次。
  也许有人会疑惑,像这样的局部缓存,普通的Ajax不能做吗?能做,一直以来很多大项目都是使用Ajax来做动态数据的缓存的。但是使用本地储存来解决这个问题比Ajax缓存的方法先进的多,只不过它不能兼容到低版本浏所以没有被重视起来。通常页面上不会只有一处动态内容,会有很多重复的动态内容,如果每个动态内容都用Ajax缓存,这就需要大量的HTTP请求。使用本地储存只需要一次Ajax请求,而且它把数据分的很细从服务器加载起来就像数据库的差异备份一样。而Ajax缓存的方法,一旦数据有细微的变化就需要重新加载整个列表,当然就更浪费服务器资源。
  总之这篇文章想表达的核心思想是把数据库映射到前端,让前端把映射的数据作为NoSQL查询来减轻服务器的负担。虽然这个技术各种优秀,但是我的这个网站没有使用它。首先是低版本浏览器的兼容性问题,再就是SEO方面的问题。像我这种访问量少的可怜的小网站用了反而会得不偿失。
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^