动态触发的缓存更新机制异步化的可能性
2006-05-14 23:31
309 查看
FBO wordpress插件在搜集来自朋友的outline时采取的是和wordpress dashboard以及lilina类似的
动态触发的缓存更新机制,也就是每次有用户访问某些页面的时候触发搜集过程,搜集过程先在缓存中查找,如果有未过期缓存可用,就使用缓存,否则就做远程更新。这种做法解决了一些问题,但有着不可避免的缺陷,尤其是在页面请求之间形成loop的时候更加糟糕。
车东的一篇blog提到了如何改良这种缓存机制,他的方法是在服务器端部署一个cron任务,定期触发更新缓存的链接。这样可以减少用户触发远程同步的几率,但是抬高了技术门槛,拿FBO wordpress插件来讲,如果要求每个用户都去服务器上加一个cron任务,几乎不太可能。
动态触发的缓存更新机制的问题是触发的过程和更新的过程必须同步的问题。是否能将请求的触发和缓存更新变成一个异步的过程,是解决这个问题的根本。我查了下php的资料,除了一个不推荐在webservice上启用的pcntl提供的fork以外,没有找到现成可用的异步机制。只有想其他的办法了。网页上的异步机制,最容易想到的就是ajax,想到这里,解决方案基本上就有了。
首先,将触发缓存更新的页面请求链接独立出来,比如说定义成http://www.example.com/update-cache,不提供任何的直接访问。在用户访问相关页面的时候,可以先强制使用缓存内容,同时,通过页面中的javascript调用xmlhttprequest向http://www.example.com/update-cache发出一个异步请求。由于是异步请求,页面的调入不会有延迟。对于这个异步请求,我们可以不提供任何callback处理。这个异步请求自动在后台启动缓存更新机制,因为没有人在线等待起结果,这个请求有多长的延迟也不会有影响。原本会造成延迟的同步请求就变成了后台的异步操作。
由于这个问题的存在,我暂时停止了FBO wordpress插件0.2版的下载。我会尝试用这个新办法,争取在下一版解决这个问题。不知道熟悉网站开发的朋友对这个问题有什么更好的建议?
动态触发的缓存更新机制,也就是每次有用户访问某些页面的时候触发搜集过程,搜集过程先在缓存中查找,如果有未过期缓存可用,就使用缓存,否则就做远程更新。这种做法解决了一些问题,但有着不可避免的缺陷,尤其是在页面请求之间形成loop的时候更加糟糕。
车东的一篇blog提到了如何改良这种缓存机制,他的方法是在服务器端部署一个cron任务,定期触发更新缓存的链接。这样可以减少用户触发远程同步的几率,但是抬高了技术门槛,拿FBO wordpress插件来讲,如果要求每个用户都去服务器上加一个cron任务,几乎不太可能。
动态触发的缓存更新机制的问题是触发的过程和更新的过程必须同步的问题。是否能将请求的触发和缓存更新变成一个异步的过程,是解决这个问题的根本。我查了下php的资料,除了一个不推荐在webservice上启用的pcntl提供的fork以外,没有找到现成可用的异步机制。只有想其他的办法了。网页上的异步机制,最容易想到的就是ajax,想到这里,解决方案基本上就有了。
首先,将触发缓存更新的页面请求链接独立出来,比如说定义成http://www.example.com/update-cache,不提供任何的直接访问。在用户访问相关页面的时候,可以先强制使用缓存内容,同时,通过页面中的javascript调用xmlhttprequest向http://www.example.com/update-cache发出一个异步请求。由于是异步请求,页面的调入不会有延迟。对于这个异步请求,我们可以不提供任何callback处理。这个异步请求自动在后台启动缓存更新机制,因为没有人在线等待起结果,这个请求有多长的延迟也不会有影响。原本会造成延迟的同步请求就变成了后台的异步操作。
由于这个问题的存在,我暂时停止了FBO wordpress插件0.2版的下载。我会尝试用这个新办法,争取在下一版解决这个问题。不知道熟悉网站开发的朋友对这个问题有什么更好的建议?
相关文章推荐
- Java ResourceBundle properties 更新缓存 动态配置
- Yii的缓存机制之动态缓存
- javascript的动态加载、缓存、更新以及复用(一)
- js的动态加载、缓存、更新以及复用(二)
- MFC---如何利用菜单更新机制动态更新菜单
- 采用动态缓存机制的内容发布实现(一)工作流程
- Vue.set()动态的新增与修改数据,触发视图更新的方法
- 在动态页面里象静态页面一样控制整个网页的缓存和更新
- 用代码执行 UpdatePanelControl.Update() 指令来动态决定到底更新哪一个/哪些UpdatePanel区域,并不一定只是更新触发回发的UpdatePanel区域
- 如何实现缓存系统的更新机制
- 如何实现缓存系统的更新机制
- PHP常见缓存技术分析 php缓存机制 数据缓存 页面缓存 内存缓存 时间触发缓存 内容触发缓存 静态缓存
- 如何实现缓存系统的更新机制
- 如何实现缓存系统的更新机制
- linq to sql 更新缓存与自动更新机制
- js的动态加载、缓存、更新以及复用(四)
- 采用动态缓存机制的内容发布实现(二)系统组成
- DiscuzX2.5 帖子页面更新浏览量 缓存机制
- javascript的动态加载、缓存、更新以及复用(一)
- Vue实现调节窗口大小时触发事件动态调节更新组件尺寸