1 OSCache 缓存原理简介
Cache Factory
Cache Proxy
Cache Map
Memory
Disk
Listeners
Cache Entry

Cache Factory :该实体负责获得 Cache Proxy ,兼有一些对 Cache Proxy 的管理功能。对应到现在的 OSCache 实现中的类是: GeneralCacheAdministrator 和 ServletCacheAdministrator 。
Cache Proxy :该实体是 Cache Map 的代理,它主要负责从 Cache Map 中取得 / 存储指定的缓存对象,如果缓存对象过期,那么就将缓存刷新,并向指定的监听者发送存 / 取事件。对应到现在的 OSCache 实现中的类是: Cache 和 ServletCache 。
Cache Map :该实体存储了所有的缓存实体,是一个 OSCache 专有的 Map 实现,它能根据指定的算法清除缓存,以及将缓存持久化到磁盘中。对应到现在的 OSCache 实现中的类是: FIFOCache , LRUCache 和 UnlimitedCache 。
Listeners : OSCache 存 / 取事件的监听者实体。对应到现在的 OSCache 实现中的类是: CacheEntryEventListener 和 CacheMapAccessEventListener 。
Cache Entry :表示缓存对象的包装实体,它包装了缓存对象和刷新策略。对应到现在的 OSCache 实现中的类是: CacheEntry 。
1.1应用场景
一个典型的“缓存对象”场景是:
应用调用 Cache Factory 获得 Cache Proxy ,然后应用将要缓存的对象以及刷新策略通过 Cache Proxy 存储到 Cache Map 中,并通知各个 Listener 。
一个典型的“取得缓存对象”的场景是:
应用调用 Cache Factory 获得 Cache Proxy ,然后给 Cache Proxy 的相应方法传入要获得的缓存对象的 key , Cache Proxy 会根据指定的刷新策略判断缓存是否过期,如果缓存没有过期,则返回缓存对象,如果缓存过期,则刷新缓存,并向应用层抛出需要刷新的异常( NeedsRefreshException ),应用如果收到此异常,将重新计算内容并将内容缓存。