解决WordPress头像优化Gravatar加载延迟高本地化保存加速

说到网站速度优化,一直以来都有一个小小的问题,那就是Gravatar头像,这个东西加载时快时慢,某一时候加载不正常延迟非常高,十分拖累网站加载速度,而网上很多之前的加速接口好像也都已失效。今天来让这个东西加载后自动保存在本地,下次加载直接使用本地链接。放在自己这里稳定高效。

一,创建缓存目录

在你的WordPress根目录创建一个avatar 的文件夹,权限调整为755

20200221-64b67c84f76c8

二,设置默认头像

并不是所有人都设置了Gravatar头像,我们给那些没有头像的设置一个默认图片,没有头像就显示这个图片。

avatar文件夹放入一张名称为default.jpg的图片,默认没有头像即使用这个图片。

#:这里钻芒这里并默认没有调用这张图片,而是依然使用Gravatar头像。可能是之前魔改导致的,这一步仅供参考

20200221-9932879717df2

三,将下边的代码放到 functions.php

把下边的代码放到你主题的functions.php内,默认14天刷新一下本地头像缓存,可根据自己自定义。

//Gravatar 头像本地化加速
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 = get_bloginfo('wpurl');
$e = ABSPATH .'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', 'my_avatar');

最终实现效果查看

20200221-a0f4825ee89f5

 

文章最后更新于 2021-08-20

给TA买糖
共{{data.count}}人
人已赞赏
WordPress优化

WordPress导入提示上限50M 宝塔面板修改WP-All-in-One WP Migration插件

2020-2-20 1:41:33

WordpressWordPress优化

隐藏WordPress顶部黑条去除管理员登录工具条

2020-2-23 18:19:01

3 条回复 A文章作者 M管理员
  1. 有办法可以使用PHP实现做成一个接口么?现在好像没有做的,这样就可以将头像的缓存服务器单独用一台VPS出来做了,不用走WP这台了 :mrgreen:

    • PHP没有,可以改下代码配合CDN使用。CDN回源即可。

  2. 文章不错支持一下吧