如何缓存 Gravatar 至本地服务器
早些时候, Wordpress 还没有将 Gravatar 做成原生功能。当时存在一批 Gravatar 增强插件,其中 Gravatar2 有个不错的选项可以将评论者的头像缓存至本地。
Wordpress 缓存 Gravatar 的好处显而易见,它可以减少 Blog 站外文件的请求数量,加速页面的载入。要知道 Gravatar 服务被全球不计其数的站点使用, 其服务器压力可想而知。遇上高峰时段,Gravatar 铁定会成为影响我们 Blog 加载速度的瓶颈。尤其使用国内空间的同学,感觉应该更为明显。
现在人人都用上了 Wordpress 内置的 Gravatar,倒也没有必要返回去找 Gravatar2。原本我是想这么做的,可是看过它的功能列表之后还是算了。太强大,太小题大做。
后来我转而找到一位美籍华人写的小组件 - Generic Gravatar Cache,该组件主要提供非 Wordpress 的 CMS 缓存 Gravatar 的需求,我们可以拿这个小东西套回 Wordpress。
需要说明的是,它不是 Wordpress 的插件,并非上传激活就可以用的东西。嫌麻烦的同学可以不看了。
接下来,使用方法中文化文档开始。
1. 去作者主页下载该组件,解包,上传。路径随意,我放在 /gravatar 目录下。
2. gravatar 目录内应该有两个文件夹: cache 和 profile;三个文件: index.php, .htaccess, mysql.sql
3. 赋予 cache 文件夹 755 权限: chmod a+w 。
4. 本地新建一个 php 文件,写入以下内容,文件名 avatar.php,上传至 profile 文件夹内。请自行更改相应内容符合自己的需求。切记要放置默认头像。
<?php
$config['default'] = 'http://domain.com/default-gravatar.png';//无头像时返回的默认头像路径
$config['rating'] = 'PG';//gravatar的内容级别
$config['size'] = 64;//头像尺寸
?>
5. 编辑 .htaccess 文件,默认 RewriteRule . index.php [L] ,请依照你的实际放置目录修改,比如我的是 RewriteRule . /gravatar/index.php [L]
6. 打开 wordpress 模板的 comments.php 文件,查找
<?php echo get_avatar( $comment, 32 ); ?>
替换为
<img src="http://yourdomain/gravatar/cache/avatar/<?php echo md5(strtolower($comment->comment_author_email)); ?>" alt="" />
细心的同学应该会发现,路径中的 avatar 其实就是第四步创建的那个 php 文件的名字。你还可以创建不同的 Profile 应用在各个地方。
到此,Wordpress 缓存 Gravatar 至本地的操作便完成了,首次缓存的头像日后会被直接调用而无需再跑到 gravatar 查询。快就快在这里,省略查询的时间,静态化 Gravatar。
Note:使用 Nginx 的服务器可能暂时不支持 Generic Gravatar Cache。我不熟悉 Nginx,帮不上忙。
P.S 担心缓存占用空间的同学,可以定期清理缓存。

吧头像作为背景传输就没有这个问题了,哈哈
但会更麻烦的。
缓存?感觉不太需要吧..
没有缓存的话是不是就是会拖慢网页速度?
@NetPuter: 评论多了你就会看出区别了,毕竟从 Gravatar 的服务器请求图片速度肯定不如直接从你自己的服务器上请求的速度快。
两者之间肯定要做权衡的,缓存的话也要存好多文件,况且我的本地速度感觉还不比gravatar的快......
@NickyYe: 我用的 cron job,一个礼拜清理一回。其实一个礼拜下来也没多少图片,有请求才会缓存。Gravatar 还算快吧,但是慢的时候也挺吓人的。
@NickyYe: 话说我现在打开你的 blog,最慢最后载入的就是 Gravatar。
How to写得很好很详尽,
大侠就应该多分享点东西出来嘛
@asiapan: 我很懒,但是这两天没写什么,也不知道要写什么,就想起写这个了。。。
@xiaorsz: 要是放在国内空间就不用这么追求了,不过国内的空间不是太让人满意。
还行吧,ff本来缓存做的就很充分
我是来玩左侧箭头的,,
有没有考虑过设置为鼠标over时自动滚屏??对留言多的页面很有用.
要不只是点一下就到头/尾,感觉实用性少了点
@iColor: 主要是实现不能实现的功能,就是直上直下。一般人看网页都习惯用鼠标滚动吧。而且我处理不好浏览器卡的问题,所以连直上直下都只能让它快点,滚慢了都有卡的感觉。
不管如何,我装了。左边的箭头很好看。
@leehow: 当然了,又不用你自己装。。。
我的评论多...的确有这个问题...但整个页面做完优化后的加载速度还可以,所以暂时不动它.
@Yacca: 你评论多,用这个本地缓存的效果十分明显,图片应该会先于网页加载完成。
嘿嘿
我没这个问题
因为我的评论太少了:(
@老所: 可能我是真的有点过于追求速度了。。
Shawn:
你评论回复了会发邮件这个功能真不错,请问这个是用什么插件实现的?
而且,觉得你真细心啊,邮件还是中英双语的,呵呵。建议再加些语言,:)
@老所: 可以在这里下载。不是我细心,是人家后台原本就有两种语言,我只是改写了一下内容和样式。
@老所: 对了,需要使用一定的格式才能触发邮件功能,就像你看到的。
路过。
@老所:
Wordpress Thread Comment也不错,我blog用的是,,
突然想到了一个问题,头像缓存在本地...也是一堆不小的文件啊...-.-我的留言本什么的要是被打开一次,几百个图片文件就要被加载一回-.- 恐怖的流量
@Yacca: 比如你在我这里,随便留过多少次言,在多少篇文章里留过言,实际只占用空间里的一张图片缓存,因为你邮件地址没有变过嘛。每张图片不到 2kb。。。
@Shawn: 这2kb*n也是很恐怖的...发现你还有加载ico...
@Yacca: ico 是直接从 google 调用的,那个不费流量。
@Yacca: 你那里每个月有多少流量限制?如果流量紧张就还是算了,我这里每个月有一大把剩余。。。
我流量15G 每个月大概耗费10+吧,略剩一点-.-
ico从google调用,这个办法似乎看到过,不过无意间又增加了页面内的元素了 累...
建议你多搞几个不同颜色的css...嘿嘿 这个灰色的我看了有段时间了,亮丽型的来一个
@Yacca: 有空我还是重新做一个吧,这个我实在不想再改了,都无聊了。。。
好玩!
速度果然很快!!
@xiaorsz: 我觉得还是不够快。。。
@iColor:
我装了Shawn提到的这个email回复的插件,挺不错的,至于Thread Comment,我听说Wordpress将集成,所以还是等以后得官方集成吧,尽量少装插件。
其实还好 毕竟WP的博客留言又不是成千上万的 几十条的话还在承受范围内
实在不行可以像YACCA那样把留言做个分页...
@disinfeqt: 做分页可能有时候让访者觉得麻烦,遇上网速不行的时候放在国外也痛苦。我测试了一下,缓存 Gravatar 对有10条以上留言的页面都有更快的打开速度。当然,也可能是我太在意那么一点点速度了。。。
那个上下感觉现在一碰就有~~
哈哈,还是觉得点的合适一点点
@痞子C: 谢谢提醒,我昨天试试玩儿忘了弄回来。。。
这个好,我去试试。
gravatar太慢了,自己博客的服务器也不快……愁人啊
@Betty: 博客服务器理论上会比 Gravatar 的服务器快一些,因为都是同一个地方请求。
能问一下你用的是什么代码加亮插件啊?
@Alan: 哈哈,真的唬住人了,我没用代码高亮,你搜索一下发芽网,是代码转换的一个在线工具。
@Shawn:
不过这个样式很漂亮
其实未必会快多少.浏览器都有并发连接数的限制的.
@skyblue: 呵呵,这个吗,你亲自试过就知道了。小众软件刚刚用上,页面载入速度提升了很多。并发数确实是个问题,但是没有触及根本,这种方式省略了一次查询,类比就是 php 和纯 html 下载。
很有用~谢谢了。我就直接调用你站里的Gravatar系统好了
@neekey: 哈哈,我这里没有你要的分辨率。
我用这个的方法缓存差不多一个月了,但发现一个问题,默认的头像无法调用,是不是一定要放在根目录才可以的??
如果能修改成默認的話按照wp的後台的默認頭像設置就好了,畢竟裡面有套裝的默認頭像,不至於出現相同的默認頭像而導致過於單調~
avatar 不是上传到profile文件夹里么。怎么替换的时候又跑到
gravatar/cache/avatar cache里面了啊
唉 试了好多次了 头像总是XX。。。会不会是使用了 缓存插件的原因饿、。