如果你使用七牛云存储的话,可以通过七牛云存储缓存加速Gravatar头像以解决因某墙导致的官方头像加载不了,速度慢的问题。对于WordPress 博客速度上的提升绝对是非常可观的。之前分享过《通过多说服务器缓存加速Gravatar 头像,解决被墙问题》,但用过多说的都知道,多说有时候加载速度也很慢。本文的思路大概来源该文,通过结合七牛特有的源站加速功能,稳定性与速度上更上一层楼。
以前的Gravatar 头像缓存方法弊端
WordPress 免插件仅代码实现 Gravatar 头像缓存——来自willian kan的方法,需要新建个文件夹,权限之类问题,操作麻烦,依赖网站所在的空间主机;
通过多说服务器缓存加速Gravatar 头像,解决被墙问题——速度上有了保障,但稳定性欠佳;
现在,通过七牛云存储缓存加速Gravatar头像——七牛特有的源站加速功能,操作方便,速度、稳定性一流;
通过七牛云存储 缓存加速Gravatar 头像教程
下面的操作需要你有七牛账号,如果没有,可以直接进行第三步“修改WordPress 的get_avatar 函数”,Jeff 本人可以免费为您提供改该域下的七牛云存储缓存加速Gravatar头像服务。
一、新建空间。登陆七牛云存储 开发者后台,新建个空间,比如Jeff 新建个名为“gravatar”的空间(要设置为公开),对应的二级域就是gravatar.qiniudn.com。
二、源站加速。点击该空间的“空间设置”—“源站加速”—“一键加速”,输入多说所在的 gravatar.duoshuo.com
本步骤是镜像多说缓存Gravatar 头像的地址,你也可以直接镜像Gravatar官方的 www.gravatar.com 。
三、修改WordPress 的get_avatar 函数。
将下面的代码添加到主题的 functions.php 文件下:
function dw_get_avatar($avatar) {
$avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.qiniudn.com",$avatar);
return $avatar;
}
add_filter( 'get_avatar', 'dw_get_avatar', 10, 3 );
代码神马意思应该很容易明白吧,通过自定义函数dw_get_avatar
,该函数由通过str_replace()
字符串替换函数替换$avatar
参数,最后再通过添加过滤器(filter)以替换默认的get_avatar
函数。
详细原理参考WordPress 官方文档:get_avatar 函数
然后,查看评论里的Gravatar 头像路径,已经是七牛服务器上的了:
演示效果么,本站DeveWork.com 就是啦,你看看页脚那些带头像评论图片的路径。
享受加速带来的快感吧!
免费提供该加速节点
如之前所说,如果你不想为此去注册一个账号,可以直接进行上面第三步“修改WordPress 的get_avatar 函数”,Jeff 本人将免费为您提供改该域下的七牛云存储缓存加速Gravatar头像服务,即我将gravatar.qiniudn.com 这个Gravatar 头像缓存加速节点免费公开给有需要的人,让有需要的WordPress 博主都能减少因为某墙带来的网站速度加载问题。为啥那么“伟大”提供免费的?谁叫七牛给我的流量用都用不完啊!~~现在木有了~~
折腾完这个,我发现本站DeveWork.com 前台的图片等静态文件几乎全部都缓存到七牛云存储那里去了。
最后总结:
本质上这个没啥技术含量,只不过在写上一篇文章时候偶然想到可以结合七牛那个源站加速功能来实现加速;抛弃了以前方法的本地服务器缓存带来的图片占用以及对一些小白来说的权限问题。一个不能忽视的问题是:不能自动更新缓存,意味着使用这种方式,如果更换了头像图片,不会自动刷新缓存——除非你手动删除缓存。求位大神开发个更新通知并自动更新缓存的代码神马的吧~
8.2更新:发现一个问题,因为源站加速的原因,上诉方法所引用的评论图片不支持size参数如?s=xx
,引用为默认的80px。如此一来,如果本身要40px的图片,可能会多加载1-2kb 的容量,解决方法:http://devework.com/qiniu-cache-acceleration-gravatar-problem.html。
最后,给几篇有关七牛的相关文章(话说,七牛云存储就是厉害,但未来不知可不可靠):