特殊时期竟连 Gravatar 也被屏蔽了……如果网站出现加载速度缓慢等问题,有80%的原因在于此。 总而言之,当 WordPress 在发现需要载入 Gravatar 头像时,使用以下代码会自动下载至本地服务器,下一次加载则直接从自己的网站上调用。由于网络的特殊性,Gravatar 打不开或者速度慢等情况是常有的事。所以开启此功能很有必要,仅适用于国外主机。在 functions.php 中添加:
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 = home_url(); // $w = get_bloginfo('url'); $e = preg_replace('/wordpress\//', '', ABSPATH) .'avatar/'. $f .'.jpg'; $t = 604800; if ( empty($default) ) $default = $w. '/avatar/default.jpg'; 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($default, $e); return $avatar; } add_filter('get_avatar', 'my_avatar');
其中,$t = 604800; 是缓存的时间,以秒为单位,默认为7天。同时需要在你的网站根目录下新建一个名为”avatar”的文件夹,权限设置为777,在此文件夹内放入 default.jpg 作为没有头像时默认的显示图片,尺寸为 50*50。
亦或是直接使用我提供的七牛镜像服务器:
function replace_avatar_url($avatar) { $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"ds-gravatar.qiniudn.com",$avatar); return $avatar; } add_filter( 'get_avatar', 'replace_avatar_url', 10, 3 );
加完这个有什么实质性的作用吗?作用大不大?如果不用默认的评论框呢?
@豆采博客,www.csh7.cn 不用默认的评论框没有效果……不过像多说什么的都有做Gravatar缓存
@WP酷 多说的缓存也是坑爹,他自家的多说头像部分都回源了。
@豆采博客,www.csh7.cn [路过] 网站不错很漂亮!
@豆采博客,www.csh7.cn [路过] 网站不错很漂亮!
缓存到本地的代码只有美国主机使用才有效果,国内主机使用了在抓取Gravatar 头像原图的时候就已经被屏蔽了,造成加载失败,并且更加拖慢了网站速度。至于多说的缓存。。。。用了之后你就会发现。。他有更新周期。。。更新时由于多说服务器也是国内的。。造成大量图片报502错误
可以用https
我按照你七牛镜像设置后所有头像都是一样的默认头像是什么原因
谢谢博主,博主太好人了
好资料。。。正需要