串串烧:
碰到RSSChannel自定义标签,调用RSSChannelTag构造函数,其取得了RSSSubscriber的一个实例(Singleton模式)。RSSSubscriber初次创建时,创造存储RSSInfo的缓存,以及一个用于更新页面的SortedSet(此Sortedset保存的对象是Comparable的东西,根据过期的时间排列)。之后就doStartTag,首先根据制定的url,去得到RSSInfo,这会把控制权交到RSSSubscriber,它首先看缓存中有没有,若没有就得自己parse url了,然后存储于缓存,并把相应信息放到那个SortedSet中。回到RSSChannel自定义标签中,之后,保存一些必要的信息于pageContext中,然后EVAL_BODY_INCLUDE。
最后看看Daemon进程如何工作:它首先肯定是个循环,若无退去信息,将不停的去更新set中的东西。set中的第一个元素当然是最可能过期的那个,我们看他是否过期了,若过期了,它就从SortedSet中移除,若没过期,就等待直到第一个过期了。这样我们就得到一个要更新的,因为已经从SortedSet中删除了,我们需要放入一个更新后的东西,当然本地缓存也要更新。
本文介绍了一种RSS页面缓存及更新方案,利用Daemon进程周期性检查并更新已缓存的RSS页面,确保内容的一致性和时效性。通过RSSSubscriber组件管理缓存和更新逻辑。

被折叠的 条评论
为什么被折叠?



