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

Written by sleepy On 十月 - 22 - 2009 28 Comments

这次折腾的目的

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

这次折腾的参考

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

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

代表人物分别是:

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

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

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

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

代表人物:

willin《簡易的 GRAVATAR 頭像緩存》

这次折腾的操作

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

[cc lang="php"]

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)) >    $t ){ //当头像不存在或文件超过14天才更新
$g = ‘http://www.gravatar.com/avatar/’.$f.’.jpg?s=’.$size.’&d=’.$default.’&r=’.$rating;//获取头像的地址
copy($g, $e);//保存头像到本地服务器
}
return get_bloginfo(‘home’).’/wp-content/’ . $a;//返回本地服务器上头像的地址
}

[/cc]

下面简单说一下步骤:

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

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

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

这次折腾的收获

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

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

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

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

O了。

about blog

Enjoy this Post? We'd love your vote!

28 Responses so far.

  1. Hobo 说道:

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

    [回复]

    sleepyNo Gravatar 回复:

    @Hobo, 换空间吧,呵呵

    [回复]

    HoboNo Gravatar 回复:

    @sleepy, 问题是没钱

    [回复]

  2. 万戈 说道:

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

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

  3. whisperer 说道:

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

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

    whispererNo Gravatar 回复:

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

    [回复]

    sleepyNo Gravatar 回复:

    @whisperer, 我整理下发给你

  4. Louis Han 说道:

    收藏一下 有时间再折腾

    [回复]

    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. MuMu'S 说道:

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

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

  9. willin 说道:

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

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

    sleepyNo Gravatar 回复:

    @willin, 谢谢提醒!

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

  10. goldapple 说道:

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

    [回复]

  11. chancat 说道:

    …呃 你这个方法简单多了

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

  12. Dianso 说道:

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

    [回复]

    sleepyNo Gravatar 回复:

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

    [回复]

Banners

Featured post

10秒钟完成个性化wordpr...

Posted on : 四 - 14 - 2010

你绝对没有看错,的确只需要10秒钟就可以完成一个质量上乘...

20个Google Wave邀...

Posted on : 十一 - 4 - 2009

已经全部送完了,谢谢大家的关注! 此日志的内容如标题,...

Google Wave,这次真...

Posted on : 十一 - 26 - 2009

直接看图吧 和上次一样,有需要的朋友直接在留言里填上你...

直接在MSN上twitter

Posted on : 十 - 29 - 2009

直接一点,推荐一个服务,可以让你直接在MSN上twitter。 网...