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中。 若你想对缓存时间进行调整,就看上面代码的说明吧。

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

相关文章
如何有效确定网站关键词[转载]Mysql性能之SQL语句性能优化Apache使用中没有的模块如何加载?如何把wordpress优化到极致?(Yslow打98分)在IIS中删除ETag的方法[转载]网站用户体验优化怎么做?通用设置htaccess来优化wordpress实现yslow评分达到A优化wordpress的图库(相册)lightbox效果PHP 性能优化技巧wordpress半角引号变成全角引号问题的解决解决tsov出国后无法直接在后台备份及发送邮件的问题Tsov-Weather plus升级至1.4版(解决UTF-8编码和指定城市的功能)TSOV的wordpress天气插件功能升级了[紧急通告]TSOV的wordpress天气插件访问量过大,请更换分站地址网站PR更新的感悟我的wordpress weather widget(天气插件)饲养蜘蛛技巧MySQL优化全攻略-相关数据库命令优化MySQL数据库性能的几个好方法
    标签:优化wordpress缓存gravatar 评论数:12 发布于:2010-09-04 19:29:12

当前共有12条评论,我也要发表:

    我的名字:

    我的邮箱:

    作者:爱新奇时间:2010-12-09 09:24:04回复

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

      作者:simon时间:2010-12-09 09:43:04回复

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

    作者:许亚成 电子商务策划时间:2010-09-08 11:14:43回复

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

      作者:simon时间:2010-09-08 11:45:44回复

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

    作者:指舞六弦时间:2010-09-07 16:59:03回复

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

      作者:simon时间:2010-09-08 00:08:41回复

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

      作者:simon时间:2010-09-07 19:04:21回复

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

    作者:xiulong时间:2010-09-06 23:45:59回复

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

      作者:simon时间:2010-09-07 00:16:07回复

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

        作者:xiulong时间:2010-09-07 00:22:51回复

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

    作者:许亚成 电子商务策划时间:2010-09-06 15:42:51回复

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

      作者:simon时间:2010-09-06 17:06:35回复

        那个地方出错?你的空间是WIN的还是LIUNX的?