Web services cache 之二
cache的一致性模型一般来说建立在三种机制上的:
expiration time, polling, invalidations.
Expiration Time
比较常用的如TTL (time to live), TTR (time to refresh)。比较容易理解,也就是cache多长时间来refresh,可以生存多长时间。过了该制定的时间间隔,就去掉该cache。
Polling 轮询
可以是client对server的轮询,问server是不是数据过期了。也可以使server对client的轮询更新,定期的给client更新数据。如果client使用数据的间隔一定,每次client使用数据前server都给client的数据跟新了,那么client就不会有coherence的问题了。其实以http协议为例,可以加上If-Modified_Since或者lastupdate time来告诉client数据是否更新过了,这样可以避免实际的数据获取。pulling or pushing , c2s or s2c.
Invalidation
这种机制是可以保证不管client端什么时候来拿,是什么client来拿都可以拿到最新的数据,而不是过期的cache。当数据源的数据有变化时,会触发cache相应的数据更新。这样的问题是如果c/s的,多余的通讯开销以及这种关联管理的复杂性。

expiration time, polling, invalidations.
Expiration Time
比较常用的如TTL (time to live), TTR (time to refresh)。比较容易理解,也就是cache多长时间来refresh,可以生存多长时间。过了该制定的时间间隔,就去掉该cache。
Polling 轮询
可以是client对server的轮询,问server是不是数据过期了。也可以使server对client的轮询更新,定期的给client更新数据。如果client使用数据的间隔一定,每次client使用数据前server都给client的数据跟新了,那么client就不会有coherence的问题了。其实以http协议为例,可以加上If-Modified_Since或者lastupdate time来告诉client数据是否更新过了,这样可以避免实际的数据获取。pulling or pushing , c2s or s2c.
Invalidation
这种机制是可以保证不管client端什么时候来拿,是什么client来拿都可以拿到最新的数据,而不是过期的cache。当数据源的数据有变化时,会触发cache相应的数据更新。这样的问题是如果c/s的,多余的通讯开销以及这种关联管理的复杂性。
