all about life

还在折腾:十行代码搞定Gravatar缓存

这次折腾的目的

我的博客上有3个地方用到了Gravatar,留言+灌水榜+“伟大的墙”,特别是墙每次打开都是缓慢地读头像图片,让我很不舒服。

这次折腾的参考

因为本人在这方面是小白,所以首先当然是去参考前人+高手们的经验之谈,总结下来有两种方法:

一、使用“GRAVATAR CACHE”这个组件(注意不是插件),其步骤比较繁琐。

代表人物分别是:

Shawn《如何缓存 Gravatar 至本地服务器》

Showfom《更换空间 + 再次提速之 Gravatar 头像缓存》

万戈的《缓存 Gravatar 头像至本地服务器》

二、直接使用php代码来搞定,其步骤相对简单。

代表人物:

willin《簡易的 GRAVATAR 頭像緩存》

这次折腾的操作

标题已经夸下海口,十行代码搞定,所以不拿出来献丑是不行的了。我的代码主要是参考了willin的,然后稍做改动以适应我自己的需要。

1
2
3
4
5
6
7
8
9
10
11
12
13
</p>
function my_avatar($email, $rating, $size, $default){
$p = 'avatar/';//这个是指在wp-content下建立一个权限为755并且名称为avatar的文件夹
$f = md5(strtolower($email));//根据email得到Gravatar头像的文件名
$a = $p . $f .'.jpg';//加上jpg后缀
$e = ABSPATH . 'wp-content/' . $a;//Gravatar头像在服务器上的路径
$t = 1209600;    //设定为14天,单位:秒,可按需自己改
if ( !is_file($e) || (time() - filemtime($e)) &gt;    $t ){ //当头像不存在或文件超过14天才更新
$g = '<a href="http://www.gravatar.com/avatar/'">http://www.gravatar.com/avatar/'</a>.$f.'.jpg?s='.$size.'&amp;d='.$default.'&amp;r='.$rating;//获取头像的地址
copy($g, $e);//保存头像到本地服务器
}
return get_bloginfo('home').'/wp-content/' . $a;//返回本地服务器上头像的地址
}

下面简单说一下步骤:

1、先在wp-content下建立一个权限为755并且名称为avatar的文件夹。

2、把上面的代码贴到主题下的functions.php文件里。

3、在需要的地方引用即可。

这次折腾的收获

总有人曾教导我们,要总结才会有收获,OK,我就总结一下吧:

1、全站Gravatar头像缓存到本地服务器,包括插件展示的,提升博客速度(心理作用使然)。

2、开始有点了解php和wordpress,感觉--值得深入!

3、继续发扬“生命不息,折腾不止”的崇高精神,得到心灵上的升华。

O了。

推荐阅读

  • 继续折腾:狠心地抛弃了4个插件 (30)
    今天终于有点空可以折腾自己的博客,一咬牙一狠心,抛弃了之前在用的wordpress插件共4个。插件的功能保留,但本身已经被删除,自我感觉就好像减肥成功一般。 ...
  • 我已经开始在折腾了 (26)
    “折腾”,一个很伟大的词,所有认同这个观点的朋友请到下面留言,不认同的也可以留言,反正请留言。 言归正转,因为网络的原因,使得我本想好好折腾自己博客的计划被搁...

Comments on: "还在折腾:十行代码搞定Gravatar缓存" (28)

  1. 我的空间速度很慢...所以缓存了说不定还不如不缓存

    [回复]

    sleepyNo Gravatar 回复:

    @Hobo, 换空间吧,呵呵

    [回复]

    HoboNo Gravatar 回复:

    @sleepy, 问题是没钱

    [回复]

  2. 哈哈,比我还会折腾,甘拜下风,学习学习

    [回复]

    sleepyNo Gravatar 回复:

    @万戈, 是我学习了你的精神好伐,呵呵

    [回复]

  3. 你的伟大的墙缓存怎么处理的?不会是直接套用已有的缓存地址吧?

    [回复]

    sleepyNo Gravatar 回复:

    @whisperer, 伟大的墙里把留言者的email传值到这个函数里,有缓存的地址就用,没有就直接生成一个,缓存起来

    [回复]

    whispererNo Gravatar 回复:

    @sleepy, 那不错诶,能不能把那部分email给我一下~

    [回复]

    sleepyNo Gravatar 回复:

    @whisperer, 我整理下发给你

  4. 收藏一下 有时间再折腾

    [回复]

    sleepyNo Gravatar 回复:

    @Louis Han, 你已经折腾得很厉害了,呵呵
    这么晚才回复你,有点不好意思,顺便测试一下某个插件
    sleepy´s last blog ..天哪!IP终于解封了! My ComLuv Profile

    [回复]

  5. 为了以后升级方便,我还是先不改代码了!
    我最喜欢的 就是第一时间升级到新版本!

    [回复]

    sleepyNo Gravatar 回复:

    @菠萝, 有些插件实现的功能基本上已经能完全满足我的需要了,所以就直接弄到主题里,以后也不用管 它是不是再升级了,呵呵

    [回复]

  6. 现在不是能正常使用吗?

    [回复]

    sleepyNo Gravatar 回复:

    @古墓候梅, 当然是可以使用啦,只是原来都是从www.gravatar.com上去取头像图片的,现在是直接从博客所在的服务器上取

    [回复]

  7. 在需要的地方引用即可?这句话难倒我了

    [回复]

    sleepyNo Gravatar 回复:

    @志言, 就是原来直接去访问www.gravatar.com的地方用这个函数代替

    [回复]

  8. 我等代码盲就不折腾这个了。
    满就慢啊,忍忍就好。

    [回复]

    sleepyNo Gravatar 回复:

    @MuMu'S, php方面我也是小白啦,就是折腾

    [回复]

  9. 變了, 不但變成 function 還計天數了, 這值得鼓勵! 有空該和你多交流~
    我現在遇到的問題是: gravatar 有時連不上, copy 出 0 byte 的空檔案. 煩啊~

    [回复]

    sleepyNo Gravatar 回复:

    @willin, 0byte的问题我倒是没遇到,能不能判断文件大小,然后加载个默认的来解决呢

    [回复]

    sleepyNo Gravatar 回复:

    @willin, 谢谢提醒!

    [回复]

    sleepyNo Gravatar 回复:

    @willin, 谢谢通知,我已经改了

    [回复]

  10. 折腾才有收获啊
    goldapple´s last blog ..神在车里面 - 图 My ComLuv Profile

    [回复]

  11. ...呃 你这个方法简单多了

    [回复]

    sleepyNo Gravatar 回复:

    @chancat, 还好啦,代码还算少

    [回复]

  12. 够短,不过我刚安装了个cache插件来缓存头像。
    Dianso´s last blog ..图书馆 My ComLuv Profile

    [回复]

    sleepyNo Gravatar 回复:

    @Dianso, 是不是yinheli的那个插件,那个是不错的

    [回复]

Leave a comment for: "还在折腾:十行代码搞定Gravatar缓存"

CommentLuv Enabled