Gravatar是一项用于提供在全球范围内使用的头像服务。只要你在Gravatar的服务器上上传了你自己的头像,你便可以在其他任何支持Gravatar的博客、论坛等地方使用它。但由于大中华局域网的原因, Gravatar 头像所托管的网站有时候会挂掉,就算不挂速度也很慢。所以,有必要在自己的服务器端来缓存 Gravatar 头像,这样做也会给你的博客也提提速,那怕是那几毫秒。
下面的代码来自于Willin Kan,由于Willin Kan大神不玩WordPress了,所以这段代码绝对值得收藏。
WordPress免插件仅代码实现Gravatar头像缓存的方法
一、将下面的代码丢入主题的funtions.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 = 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');
默认缓存时候为14天,其实缓存为一个月也不为过,因为这东东一般很少人更改。
二、在WordPress安装根目(即跟wp-content等文件夹同一目录下)下新建一个名为 avatar 的文件夹 ,设置该文件夹的权限为 0755 (如果 0755 不行,就试一下 0777)。放入一张同尺寸的头像图片命名为default.jpg。
唔,就这样可以了,你刷新一下含有评论的文章,然后去 avatar 的文件夹看看有没有已缓存的头像。有没有感觉网页打开的速度快了那么一些。
建议在avatar目录下新建一个.haccess文件,隐藏直接查看这些图片,内容是:Redirect /avatar/index.html https://yourdomain.com
.htaccess 刚才拼写错了,请更正。谢谢。
用了一个不相关的插件,却解决了这个问题。
能代码的就尽量不用插件,这是我的要求。
谢谢楼主精彩的付出!
国内主机不行,大发的主题就是这段代码,我采用了另外一段代码。
这个真不错
Willin Kan 貌似是发了篇为什么Wordpress飞不起来的文章就飞到typecho去了。
Willin Kan现在已不玩WordPress了,不过他的那些精华文章一直在坊间转载。
上个评论的截图似乎没正常:https://lh3.googleusercontent.com/-rYonP88bCf8/VGDN5klnGrI/AAAAAAAAD_A/E2T4_GanOfU/s638-no/%E6%98%BE%E7%A4%BA%E9%94%99%E8%AF%AF.png
看了,具体原因也不清楚,难道360浏览器认为这段文字中某些文字过于敏感?弄不懂。
非常奇怪的是,我使用360极速浏览器(7.5.3.312)浏览这篇文章是,有几段是空白的,比如
“夹 ,设置该文件夹的权限为 0755 (如果 0755 不行,就试一下 0777)。放入一张同尺寸的头像图片命名为default.jpg。”
就是直接空白,代码也有几行是空白的。文字看不到,但是能复制下来。使用IE和chrome显示正常,其它文章也正常,单独这一篇不正常,奇葩啊,从来没有遇到过这么有趣的事儿。截图如下:
如果IE和chrome正常的话,那就不应该是博客的问题了,那些过于个性的浏览器就不去满足了。
如果头像是第三方图片资源无法加载,就像Google字体那样,会拖慢一些网页显示的速度,同时无法显示头像。
每一篇文章的评论数量都不会很多,而且我只是设置评论分页,故就算自身服务器不佳,加载的速度都不会影响很大。
因为使用了CDN,所以图片可以走CDN,所以我现在也用上了这个技巧。
头像是第三方图片资源,就算无法加载,网站的网页本身加载是不会受影响的吧。
如果头像一多,本身的服务器性能不佳,估计加载也会很慢,毕竟对自身服务器会调用许多图片资源,增多进程。
我的理解是这样。
这个缓存头像只是为了快一点么?还是有其他作用么?
快一点,当Gravatar官网无法访问时头像也可以显示。
缓存了更新慢,不爽。
呵呵,头像更新慢比网页打开速度相比,我更追求网页打开速度,那怕是只提升几毫秒。
我倒觉得更有用的是教留言者如何快速翻墙出去设置自己的gravatar……
这类教程网上实在太多了,并且我也介绍过,所以我还是写写WordPress优化吧。
快成技术博客了。。。
我自已也觉得,但是发现还是写技术文轻松一下,文字对于我来说还真需要静下心来慢慢写。