本例中设定的访问博客园首页最新贴子列表,时间间隔为600秒,即每10分钟检查一次更新情况。
几个值得注意的地方:
1、注意使用的 RssXml.XPathNavigator 属性,有人可能奇怪为什么不用 RssXml.Document 呢?实际上 Document 属性在 .NET 2.0 中已废除,推荐用来替代的是 XPathNavigator 属性,从前面的 BlogCacheDependency 类中可以看到,它是来源于 XPathDocument.CreateNavigator() 所创建的,从 MSDN 我们可以知道,XPathDocument 类提供一种只读的快速缓存,显然就这个例子而言确实更加适合。
2、考虑一下,BlogCacheDependency 类中的 DependencyDispose 方法作何用?它与 Dispose 方法有何区别?让我们想一想,如果说某一次检查更新时,已经发现依赖变化了,但是却一直没有再次发送请求,那么这时会不会始终连续不断按间隔地执行 CheckDependencyCallback 方法呢?如果真的如此的话,那岂不是完全多余,因为只要查到一次有变化就不必再查了嘛。而如果我们进行跟踪或是记录日志的话可以发现,实际上只要查到依赖变化以后就不会再次 Check 了。奥妙在哪里?想一想就能知道 NotifyDependencyChanged 方法大有玄机,而且之所以会有 DependencyDispose 方法的原因其实也就在这里。其中的设计思想,值得我们细细品味吧。
三、页面使用到的 translate.xsl
不再多说,贴出主要代码:
1
2
13
四、执行情况
这是最初执行的截图:
当博客园首页没有出现新贴子的时候,我们刷新页面,总是可以得到如下的页面:
而一旦有了新贴子,那么刷新的时候出现的是上一张图。
五、你想再高级一点吗?
如果你和我一样懒或是比我更懒,那么你可以考虑再用 javascript 写一个自动刷新页面的小功能,再把页面美工一下,或是包装成一个可复用的组件用在你的网站上,又或者只是想在本机里做一个“我最关注的内容集”之类的东西?嗯,想来效果会比较不错的哦。
来源:网络