暂存架是为方面用户使用而提供的一个临时功能。当前有很多语言很多种方案来实现暂存架,以提高系统的友好访问。这次,我们在传统实现方案的基础上,又做了一些改进,使暂存架的功能更成熟、更完美。由于暂存架的实现并不是特别的复杂,所以本文仅从理论方面介绍暂存架的设计方案。
暂存架的数据存取方案通常有两种:一种是保存到数据库中;另一种是保存到本地。除非临时存储的数据量特别大,否则临时存储数据都是存储在本地。数据保存到本地通常又分为两种,一种是保存到内存中,另一种是放在文件中,比如Cookie。如果暂存架中的生命周期特别短,而且又频繁访问,那么我们将其放在内存中。对于类似购物车这样的暂存架,我们通常将其放在Cookie中,因为Cookie能较长时间的保存数据,而且读取速率也比普通文件快。
由于一个Cookie文件最大只能存放4k的数据量,因此我们只能将最重要的信息存放在Cookie中。超出4k容量之外的数据,我们放在哪里呢?
我们的解决方案是:将最重要的数据,比如文件的标识位Id存放到Cookie中,4K大小的文件足够存储成千上万个Id,也就足够存储所有的数据。那么接下来应该如何读取数据呢?
如果将所有的数据都去数据库中读取,那Cookie中存放的Id完全就可以省略,因为那样起不到快速读取数据的作用。我们的方案是将第一次从数据库取出来的数据放到内存中,然后从内存中读取,如果内存中数据失效之后,我们就根据Id去数据库中读取,然后将这些数据再放进内存中,以此保持高效、准确的读取数据。
尽管此种方案在实现起来比较繁琐,但是对于提高系统的性能来说,又算的了什么呢?而且这种方案还能实现暂存架的分页呢!