注册一次Gravatar账号即可以在千千万万的 WordPress 网站上包括本站上,评论的时候显示自定义的个性化的头像。但是Gravatar服务器链接缓慢甚至一度被Q,拖累了网站的打开速度。
//头像缓存 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 );//匹配图片名称 $e = get_template_directory() . '/images/avatarcache/' . $f . '.png';//图片缓存路径 $t = 604800; // 缓存7天 if ( ! is_file( $e ) || ( time() - filemtime( $e ) ) > $t ) { copy( htmlspecialchars_decode( $g ), $e ); } else { $avatar = strtr( $avatar, array( $g => get_template_directory_uri() . '/images/avatarcache/' . $f . '.png' ) ); } if ( filesize( $e ) < 500 ) { copy( get_template_directory() . '/images/avatarcache/default.png', $e ); } return $avatar; } add_filter( 'get_avatar', 'my_avatar' ); //end
主题目录下新建images/avatarcache目录,给与755权限,或者自己更改路径,加一张 default.png 默认头像。
刚发现,手机端无法调用缓存的头像,然后导致很多处就无法显示头像,不知道如何检查解决这问题的了。
替换该缓存函数的钩子优先级也无用,但是替换Gravater镜像服务器的钩子没有问题,手机端可以从镜像服务器去读取图片,
能缓存最好,之前我用官网的链接,有明显的延迟,后来改用镜像的站点,好了许多。
使用Gravatar头像的站点,建议都缓存本地会比较好
之前没做缓存,经常看到Chrome浏览器左下角不停的长时间的提示在加载Gravatar头像。