由于我没开启如WP Super Cache之类的缓存软件,这样子在评论多的时候,加载头像就成了一个大问题,毕竟所有的WordPress博客都是有限的几个服务器从那里获取头像的。
所以,决定缓存Gravatar头像。参照的是Willin大师的新版Gravatar缓存一文中的第二种方法。
首先在WordPress根目录下建立文件夹avatar,设置权限为755(一般网站管理后台都默认权限为这个),用来缓存头像。准备一张适合模版大小的默认头像“default.jpg”,并放到该文件夹中。
将以下代码copy到主题的functions.php文件中
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
function my_avatar($avatar) {
$tmp = strpos($avatar, ‘http’); $g = substr($avatar, $tmp, strpos($avatar, "’", $tmp) – $tmp); $tmp = strpos($g, ‘avatar/’) + 7; $f = substr($g, $tmp, strpos($g, "?", $tmp) – $tmp); $w = get_bloginfo(‘wpurl’); $e = ABSPATH .‘avatar/’. $f .‘.jpg’; $t = 1209600; //設定14天, 單位:秒 if ( !is_file($e) || (time() – filemtime($e)) > $t ) { //當頭像不存在或文件超過14天才更新 copy(htmlspecialchars_decode($g), $e); } else $avatar = strtr($avatar, array($g => $w.‘/avatar/’.$f.‘.jpg’)); if ( filesize($e) < 500 ) copy($w.‘/avatar/default.jpg’, $e); return $avatar; } add_filter(‘get_avatar’, ‘my_avatar’); |
一般来说这样就可以了。如果有别的问题可以到Willin的文中去找解答。
不错啊,受用了
@WordPress啦, 我也是copy过来的
这个是最简单的
@zwwooooo, 嗯,基本就是copy就可以了
我怎么感觉还是Gravatar官方的加载速度快~~至少比我网站的快
@Pavel, 你网站比Gravatar的还慢那就没办法了。评论少还好,多的话加载起来就慢的了。比如,我这里的读者墙,图片就有点慢。本来折腾了一下想直接调用使用这里的方法缓存下来的图片的,可是有些图片不能正确显示出来,暂时就保留着。
第四行,你是想说“建立文件夹gravatar”吧~
呵呵 不过没影响。
评论多的话,分页显示评论可以缓解。
@m, 不,是avatar,如果你建立的文件夹是gravatar,那么代码中avatar/就要相应改为gravatar。
看到缓存我就想到流量..
@mice, 不怕不怕,我的流量是20G的
暂时没有采用任何缓存的措施
我也觉得Gravatar官方的加载速度很快
@毕业生, 呵呵,有时候GFW会起作用滴
喔。原来不用wp-super cache还要折腾这些。
不过我用了cache
@vastar, 我曾用过那插件,不过好像出了些问题就停了
看来我得好好学习学习!
@4399, 小游戏网站啊
比起缓存我更担心流量,呵呵~~还是先收藏了,备用~
@人好哇!, 我目前还不担心这个问题,流量是200G的
@人好哇!, 说错了,是20
确实应该给gravatar减负了啊 😉
@Mucid, 嗯,评论少或分页的就没很大问题
现在评论还不是很多,等到100以上再进行头像缓存。 😛
@阿七, 不缓存的话,我的有时候会需要等待一会
@阿七, 睡吧!!!晚安!! 😎
函数有点没看懂…倒是用法很简单。
@leetom, 看不明也没关系,直接copy过去就可以了
@流年, 留言嵌套其实我设了限制的,10层嵌套,加上原始的评论,一共11条。你的另一条评论刚好就是第10个嵌套,所以我在那边回复不了,跑来了这边
@leetom, 你那边的留言很苛刻啊,昵称一定要3个字以上,我觉得非空就可以了