UPUPD技术论坛

标题: WordPress优化加速:Gravatar头像缓存与镜像方法 [打印本页]

作者: 洛尘    时间: 2015-4-29 16:45
标题: WordPress优化加速:Gravatar头像缓存与镜像方法
本帖最后由 洛尘 于 2015-4-29 08:47 编辑

教程介绍
对于Gravatar头像各位应该不陌生吧,WordPress就使用了Gravatar头像,但是Gravatar头像的服务器在美国,这导致了国内用户由于各种原因打不开,加载慢,甚至影响网站的加载速度,所以本文章给出了两种解决方案.
推荐使用方案二
方案一
将Gravatar头像缓存到本地
1.首先在网站根目录创建一个avatar文件夹(权限改为777或755)。
2.新建一张默认的头像图片,名为default.jpg并放入avatar文件夹中。
3.将以下代码添加到当前使用的主题的functions.php文件中即可。
  1. //将Gravatar头像缓存到本地
  2. function ymjihe_avatar($avatar) {
  3. $tmp = strpos($avatar, 'http');
  4. $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
  5. $tmp = strpos($g, 'avatar/') + 7;
  6. $f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
  7. $w = get_bloginfo('wpurl');
  8. $e = ABSPATH .'avatar/'. $f .'.jpg';
  9. $t = 1209600; //设定还缓存时间14天,单位为秒
  10. if ( !is_file($e) || (time() - filemtime($e)) > $t ) { //头像超过设定时间或不存在则更新
  11. copy(htmlspecialchars_decode($g), $e);
  12. } else $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
  13. if (filesize($e) < 500) copy($w.'/avatar/default.jpg', $e);
  14. return $avatar;
  15. }
  16. add_filter('get_avatar', 'ymjihe_avatar');
复制代码
方案二
使用多说的Gravatar镜像源
将以下代码添加到当前使用的主题的functions.php文件中即可。(这里提供两种代码,喜欢那种用那种吧)
  1. //多说Gravatar镜像源
  2. function get_avatar_loo( $avatar ) {
  3. $avatar = preg_replace( "/http%3A%2F%2F\d.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D\d+/","mm",$avatar );
  4. $avatar = preg_replace( "/http:\/\/(www|\d).gravatar.com/","http://gravatar.duoshuo.com",$avatar );
  5. return $avatar;
  6. }
  7. add_filter( 'get_avatar', 'get_avatar_loo' );
复制代码
  1. //多说Gravatar镜像源
  2. function ymjihe_get_avatar($avatar) {
  3. $avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),
  4. "gravatar.duoshuo.com",$avatar);
  5. return $avatar;
  6. }
  7. add_filter( 'get_avatar', 'ymjihe_get_avatar', 10, 3 );
复制代码





欢迎光临 UPUPD技术论坛 (http://bbs.upupd.com/) Powered by Discuz! X3.2