当前位置: 首页 > 工具软件 > MagpieRSS > 使用案例 >

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

葛宪
2023-12-01

订阅的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
版权声明:可以转载,转载时请务必以超链接形式标明文章 的原始出处和作者信息及 本版权声明

 类似资料: