玩wordpress的站长一定对Gravatar头像不陌生,其实Gravatar头像已经成为了博客、论坛等一种非常流行的通用头像,不管是Wordpress还是Z-Blog、Typecho、Emlog等,留言或者登录注册等都支持Gravatar头像。但是由于Gravatar头像的服务器在美国,由于种种原因会造成Gravatar头像打不开、打开缓慢等情况,从而导致加载了Gravatar头像的网页加载速度变慢,打不开等情况。那么我们为了减小Gravatar头像因素对网站速度的影响,就应该尽量把尽量把Gravatar头像缓存到本地,或者使用国内Gravatar头像的镜像服务器。
首先来说下将Gravatar头像缓存到本地的方法:
一、在网站根目录新建一个名为avatar的文件夹。(权限改为755或777)。
二、新建默认的头像图片,名为default.jpg并放入avatar文件夹中。
三、将以下代码加入到当前使用的主题的functions.php文件中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | function v7v3_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 ) { //头像超过设定时间或不存在则更新 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' , 'v7v3_avatar' ); |
使用多说Gravatar镜像服务器加载Gravatar头像
大家应该对多说这款社会化评论插件不陌生,其实多说的头像就是使用Gravatar头像资源的,只不过多说自家有Gravatar头像的镜像服务器,服务器位于国内,而且没有防盗链,那么我们就可以利用多说的Gravatar镜像服务器来加载网站的Gravatar头像了,方法很简单,只要在当前主题的functions.php文件加入以下代码即可:
1 2 3 4 5 6 | function v7v3_get_avatar( $avatar ) { $avatar = str_replace ( array ( "www.gravatar.com" , "0.gravatar.com" , "1.gravatar.com" , "2.gravatar.com" ), "gravatar.duoshuo.com" , $avatar ); return $avatar ; } add_filter( 'get_avatar' , 'v7v3_get_avatar' , 10, 3 ); |
使用七牛镜像功能加速gravatar头像
上面小V介绍了使用多说镜像服务器进行Gravatar头像加速的方法,虽然目前多说没有采取任何屏蔽措施,但是人家也不是傻子,用的人多了肯定会封的。所以最安全的方法是使用自己搭建的镜像服务器。接下来小V就教大家如何使用七牛镜像加载Gravatar头像。
一、首先在七牛后台新建一个空间,设置为公开属性,如下图:
二、然后设置镜像服务器,镜像服务器,如下图:
其中Gravatar镜像源可以设置为:
www.gravatar.com
0.gravatar.com
2.gravatar.com
gravatar.duoshuo.com
只要将镜像源设置为以上站点之一即可,小V这里设置的是多说的gravatar镜像服务器。
三、然后在主题的functions.php文件加入以下代码:
1 2 3 4 5 | function v7v3_get_avatar( $avatar ) { $avatar = str_replace ( array ( "www.gravatar.com" , "0.gravatar.com" , "1.gravatar.com" , "2.gravatar.com" ), "你创建的七牛镜像站点的域名" , $avatar ); return $avatar ; } add_filter( 'get_avatar' , 'v7v3_get_avatar' , 10, 3 ); |
请依据以上代码的提示替换掉七牛镜像站点的域名。
联系客服