笔记 by 车东

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

· 应用安装|AppInstall

📌 TLDR

订阅的 Feed 变多后,Lilina 常出现"页面只剩右半边"——缓存过期时前台在同步抓远程 Feed,超时就把页面拖垮。参考 Planet / Gregarius"后台定时同步、前台只读库"的做法,作者直接给 MagpieRSS 加了 MAGPIE_LOAD_CACHE_ONLY 模式:前台只读本地缓存(配 MAGPIE_CACHE_AGE 定过期),更新交给后台脚本,文末附完整 patch。

订阅的Feed越来越多,即使基于简单的配置缓存有时候也经常速度跟不上:网站经常出现只剩下右边半边的情况,就是由于缓存期间抓取远程的网页超时导致的。其实Planet和Gregarius一样,都是在用户访问的时候避免对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](http://www.chedong.com/inc/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](http://www.chedong.com/inc/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.inc和rss_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的安装和配置

💬 历史评论

以下 5 条评论从旧版 Movable Type 博客迁移而来。 原始评论时间:2002–2016 年。

chen · 2005-11-17 21:25

请问这个怎么用?


sID · 2005-11-20 18:46

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


cero · 2005-11-25 22:50

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


sID · 2005-12-30 12:07

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


maomy · 2008-02-09 01:53

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