wordpress中把用户的头像从gravatar中缓存到本地于提高访问速度

WordPress中的评论中,用户的头像都是调用gravatar的。而gravatar是在国外,并且他们的服务器用户量也很大,响应、访问速度都比较慢。因此像我这种追求完美的人来说,这点是接受不了的。前段时间在网上找到了把gravatar头像缓存到本地的方法,运行了好些天发现不错。特推荐给大家。

方法比较容易,不搞插件。
一、直接在主题下的functions.php文件中,增加以下代码:

//把用户的头像从gravatar中缓存到本地,以提高访问速度
function my_avatar($avatar) {
$tmp = strpos($avatar, ‘http’);
$g = substr($avatar, $tmp, strpos($avatar, “‘”, $tmp) – $tmp);
$tmp = strpos($g, ‘tsov-net-userface/’) + 7;
$f = substr($g, $tmp, strpos($g, “?”, $tmp) – $tmp);
$w = get_bloginfo(‘wpurl’);
$e = ABSPATH .’tsov-net-userface/’. $f .’.gif’;
$t = 2592000; //偶改为30天, 单位:秒
if ( !is_file($e) || (time() – filemtime($e)) > $t ) { //當头像不存在或文件超过30天才更新
copy(htmlspecialchars_decode($g), $e);
} else $avatar = strtr($avatar, array($g => $w.’/tsov-net-userface/’.$f.’.gif’));
if ( filesize($e) < 500 ) copy($w.'/tsov-net-userface/default.gif', $e); return $avatar; } add_filter('get_avatar', 'my_avatar');

2010-09-08补充: 我现在把文件上传到115盘中。现在可以从下面的地址里下载:
http://u.115.com/file/f986b3a364
提取码: f986b3a364

二、然后在网站根目录下,新建一个文件夹,名字为“tsov-net-userface”,在LIUNX下系统下需要设置文件属性为可写(FTP登录》选中文件夹》右键》属性》权限中设为777,即可)。

三、在新建议的文件夹tsov-net-userface中,放置一个默认的头像default.gif。尺寸就同你原来评论用户的头像一样大。

就这样,当有访客打开评论列表时,就会自动把用户的头像缓存到文件夹tsov-net-userface中。 若你想对缓存时间进行调整,就看上面代码的说明吧。

再说明一下,这个方法是从网上找来到,不是我原创的。原文找不到了,这些感谢一下最初想出这办法的童鞋。

相关日志

发表于:2010-09-04 19:29:12 at 19:29 分类:代码 12条评论 Tags:, , ,

12 Comments»

  1. 爱新奇说道:

    的确对读者墙的加载有好处
    不过如果在本地缓存读取会不
    会增加了网站流量 因为主机是限流的
    所以还不确定用不用这个好呢 我的博有读者墙

    • simon说道:

      我是把博客的图片分到另一服务器上,网站流量就很小,缓存起来快来多了。

  2. 是linux主机,加上上面的代码后,在评论的地方出错提示functions.php,176.174行出错,就是加入的代码那几行,但是在后台你留言的头像是正常显示,我估计有可能是主题的问题,我的主题头像显示的图片代码默认是用PNG格式的,不用是GIF.

    • simon说道:

      我给你的邮箱是发了一份functions.php,你把里面的代码放到你主题下的functions.php中。里面我有写说明的了。

  3. 指舞六弦说道:

    这个 对读者墙很实际和适用,呵呵

    • simon说道:

      是的。我之前在有读者墙时就是觉得好慢。给关掉了。改天我再把读者墙放出来。呵。

    • simon说道:

      是的。读者墙加载时就快多了。给你看看我的http://tsov.net/readerswall/。我不是用插件的,直接用代码把显示改为随机。哈哈。另外,我优化成把装载的图片放页面全部完成后再加载图片,这样就不会影响打开时因图片过多,而页面空白之类的。

  4. xiulong说道:

    看到主页里面的天气预报知道你也是宜昌的。
    我在宜昌读书。
    你的博客很不错,想与你做个友情链接,以后多多交流。
    你的链接我已做好,访问查看。
    谢谢

    • simon说道:

      谢谢。你误解我的天气预报了,它是按你当前的IP计算出你所在城市再显示相对应的天气。我不在宜昌。

      • xiulong说道:

        好囧哦。
        我弄错了,不过我会一直关注你的博客的。
        希望能与你做友链。我会用一颗真诚的心

  5. 这个方法不错啊,可惜的我博客用不了,一直出错,郁闷。

发表评论

(必填)

(必填)您的电子邮箱不会被公开。

*

正在加载信息...

Archives