首页 > 技术贴 > 解决twitter for wordpress的缓存问题

解决twitter for wordpress的缓存问题

2009年5月30日

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。

分类: 技术贴 标签:
  1. 2009年5月31日11:05 | #1

    牛啊,那个作者是说的啥语?

  2. 2009年5月31日11:09 | #2

    @hxiao 你看看他的blog吧。。。我也看不懂那是啥语言,直接英语搞起。。。

  3. 2009年6月1日01:10 | #3

    其实可以纯js支持twitter信息显示的,服务端就减小负担了
    http://coda.co.za/blog/2008/10/26/jquery-plugin-for-twitter
    jquery很强大……嗯……

  4. 2009年6月1日01:23 | #4

    @yegle 暂时先用这个吧,最近就不折腾了。。。

  5. 2009年6月3日07:52 | #5

    Twitter已经被墙了,还有Flickr.com、Bing.com、Live.com、Hotmail.com

  6. 2009年6月6日01:53 | #6

    @hxiao 好不容易改的稳定点,又没法用了。。。囧死的

  7. 2009年6月6日17:44 | #7

    继续Hack,我又让他工作起来了,哈哈

本文的评论功能被关闭了.