解决twitter for wordpress的缓存问题
twitter for wordpress这个插件一直在用,主机在国外的时候也没出啥问题。但是自从主机到国内后,由于网速的问题,经常出问题,显示”no public twitter messages”。
查看插件的代码,发现插件件的作者把RSS缓存给关了。因为WP2.7的RSS Cache有问题,不能及时个更新缓存。没有缓存的话,服务器和Twitter连接速度快还好,速度一慢就出我这种情况了。。。
小改了一把,把缓存打开了,并且添加了一个删除过期缓存的函数。
首先,打开缓存:
define(‘MAGPIE_CACHE_ON’, 1);
然后设置缓存时间,下面两句的值要一样:
define(‘MAGPIE_CACHE_AGE’, 180);
define(‘TWITTWER_CACHEAGE’, 180);
然后是程序执行的开关:
define(‘TWITTWER_FORCEFLUSHCACHE’, true);
下面是具体的函数:
function force_flush_cache($url){
if ( TWITTWER_FORCEFLUSHCACHE ){
$md5_url = md5($url);
$md5_option = ‘rss_’ . $md5_url;
$md5_option_ts = $md5_option . ‘_ts’;
$cachetime = get_option( $md5_option_ts );
if ( $cachetime < ( time() – TWITTWER_CACHEAGE ) )
delete_option( $md5_option );
}
return;
}
最后,需要在插件获取RSS之前调用一下:
$rss_url = ‘http://twitter.com/statuses/user_timeline/’.$username.’.rss’;
force_flush_cache($rss_url);
$messages = fetch_rss($rss_url);
ok,完事大吉~
这些修改已经给原作者写信了,如果他觉得可行,也许就会在后续版本中加入。但是,其实,最根本的还是希望WP能修正这个BUG。
牛啊,那个作者是说的啥语?
@hxiao 你看看他的blog吧。。。我也看不懂那是啥语言,直接英语搞起。。。
其实可以纯js支持twitter信息显示的,服务端就减小负担了
http://coda.co.za/blog/2008/10/26/jquery-plugin-for-twitter
jquery很强大……嗯……
@yegle 暂时先用这个吧,最近就不折腾了。。。
Twitter已经被墙了,还有Flickr.com、Bing.com、Live.com、Hotmail.com
@hxiao 好不容易改的稳定点,又没法用了。。。囧死的
继续Hack,我又让他工作起来了,哈哈