温馨提示:本文共1700个字,读完预计5分钟。
前言
最近一直在忙着空闲时间做主题,期间遇到加载Gravatar头像很慢的情况,我平时开着VPN是没有发觉的,关了VPN后,打开网站时左下角出现 0.gravatar.com、1.gravatar.com或2.gravatar.com等域名的时候,网站一直处于加载中,几秒才能打开。
这样就会导致一个问题,很多人都会缺乏耐心地等待一个网页的打开,从而导致网站读者的流失,甚至以后不会再访问你的网站。
正文
那么如何解决了,我目前知道的方法有2种:
1、将Wordpress的Gravatar头像图片缓存到本地;
2、将Gravatar头像的源更换成国内的,从而加快访问速度。有很多优化工具的插件都实现了该功能,就不多说了。
下面分别说一下两种实现的方法
第一种:
要想将Wordpress的Gravatar头像图片缓存到本地,先在网站的主题目录新建一个avatar
的文件夹,读写权限设置为755
。
有些留言者的邮箱可能没有注册Gravatar头像,我们需要用到一个默认的图片替代这样的留言者的头像,将一张default.jpg
的图片作为默认头像放在avatar文件夹中。
打开你的主题的 functions.php
文件。
将以下代码复制粘贴进去。
1234567891011121314151617181920 | //~ 默认的是14天更新一次头像图片,你可以自己修改时间(单位:秒)function hbao_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('template_url'); $e = $w .'/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', 'hbao_my_avatar'); |
加了上面代码后,WordPress的Gravatar头像图片缓存到本地后,图片的路径不再是Gravatar官网的URL了,而是本地服务器的图片地址了。
第二种:
原理:官方的Gravatar 头像所在的路径一般都是: www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com 这四个,我们只需要将头像默认的URL换成国内的源的就行了,比如:多说,七牛,CN等等。
下面,我提供了cn.gravatar.com的修改方法,其他的也都一样:
123456 | //~ Gravatar头像源替换function hbao_replace_get_avatar($avatar){ $avatar = str_replace(array("www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com"), "cn.gravatar.com", $avatar); return $avatar;}add_filter("get_avatar", "hbao_replace_get_avatar", 10, 3); |
好了,以上即实现了gravatar头像的速度优化。
联系客服