lilina(MagpieRSS)的缓存加速II:加入MAGPIE_LOAD_CACHE_ONLY模式


订阅的Feed越来越多,即使基于简单的配置缓存有时候也经常速度跟不上:网站经常出现只剩下右边半边的情况,就是由于缓存期间抓取远程的网页超时导致的。其实PlanetGregarius一样,都是在用户访问的时候避免对FEED的动态更新。Planet和Gregarius都是使用后台脚本定时同步FEED,在MagpieRSS外面包了一层存储(数据库),我直接在MagpieRSS中增加了一个只读本地缓存模式。修改了一下MagpieRSS的缓存逻辑:加入一个MAGPIE_LOAD_CACHE_ONLY 模式,只从本地的缓存中取feed,避免更新期间向远程发送FEED同步请求。

然后在lilina前台这样调用即可:

// cache expire in 3 hours
define('MAGPIE_CACHE_AGE', 60 * 60 * 3);
// load cache only
define('MAGPIE_LOAD_CACHE_ONLY', true);

require_once('./lib.php');

完整的Patch:如下

Index: rss_cache.inc
===================================================================
RCS file: /cvsroot/magpierss/magpierss/rss_cache.inc,v
retrieving revision 1.10
diff -r1.10 rss_cache.inc
113a114,116
> global $MAGPIE_LOAD_CACHE_ONLY;
> global $MAGPIE_DEBUG;
>
117a121,126
> if ( MAGPIE_LOAD_CACHE_ONLY ) {
> if ( MAGPIE_DEBUG ) {
> $this->error("MagpieRSS [debug] $debugmsg MAGPIE_LOAD_CACHE_ONLY on", $MAGPIE_LOAD_CACHE_ONLY);
> }
> return 'HIT';
> }
Index: rss_fetch.inc
===================================================================
RCS file: /cvsroot/magpierss/magpierss/rss_fetch.inc,v
retrieving revision 1.21
diff -r1.21 rss_fetch.inc
85d84
<
393a393,397
>
> // use cache without fetch remote
> if ( !defined('MAGPIE_LOAD_CACHE_ONLY')) {
> define('MAGPIE_LOAD_CACHE_ONLY', false);
> }

2007-02-27 更新:
复制我改写过的rss_cache.incrss_fetch.inc这2个文件到Lilina的inc相应目录下,然后在Lilina展现的时候定义: define('MAGPIE_LOAD_CACHE_ONLY', true); lilina(实际上是调用的MagpieRSS库)就不读取远程RSS,直接读本地cache了。

2008-02-09 更新:
将前台聚合脚本重新打包并提供下载:252k:
缺省的编辑入口: lilina/edit.php
缺省配置文件的用户名密码为: username/password
请参考index.php中的注释设置使用后台脚本crontab更新;

参考:
lilina的安装和配置

作者:车东 发表于:2005-11-17 19:11 最后更新于:2008-02-09 22:02
版权声明:可以转载,转载时请务必以超链接形式标明文章 的原始出处和作者信息及本版权声明

引用通告

以下是前来引用的链接: lilina(MagpieRSS)的缓存加速II:加入MAGPIE_LOAD_CACHE_ONLY模式:

» MagpieRSS的parse_w3cdtf()函数对blogger atom格式的bug修正 来自 车东[Blog^2]
很奇怪从Lilina上订阅的blogger.com发布的内容发布时间总是显示为未... [阅读更多细节]

» 部分RSS流量转用FeedSky RSS烧制服务: 来自 车东[Blog^2]
上周末可能一些blog订阅用户发现订阅的内容有些突然的变化:很多忽然都变成未读了... [阅读更多细节]

Comments

请问这个怎么用?

这个patch直接用在0.7版上就可以了?

难用啊~`对虚拟主机支持也不好~

chedong能不能提供一个完整patch后的lilina到我email啊?谢谢你了.我没有unix环境.patch这个功能用不上啊.手改眼睛花了.谢谢你了.发到nickzhuo AT 126.com

hi,你2007年2月更新的两个文件的链接,第一个是错的,估计是笔误吧,呵呵。

发表一个评论

(如果你此前从未在此 Blog 上发表过评论,则你的评论必须在 Blog 主人验证后才能显示,请你耐心等候。)