网站访问速度总体已经很快了,但每次打开首页,Gravatar头像加载缓慢总是令人心烦。发现好多博客都开启了头像缓存,很是羡慕,于是我也要试试。
百度了下“wordpress头像缓存”,不外乎有两种方法:添加代码,使用插件。
能用代码解决的问题肯定不会用插件,于是在functions.php内加入缓存代码。
第一次打开首页是非常慢的,估计实在下载图片到本地服务器吧,大概10来秒后,页面才打开。查看“最给力读者”头像地址,显示本地,OK;再查看“最新评论”头像,依然是Gravatar头像源地址,没有缓存成功,查看相关源代码,发现此处并没有调用get_avatar函数;打开“读者墙”,缓存成功,但出现五六行错误代码,原因不明……
不会修改代码,只好使用插件了,选中gravatar mini cache。安装完成后发现“最给力读者”和“留言板”上的读者墙没有问题,但“最新评论”头像依然无法缓存,原因同上。
***********************************************************************************************
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; //设定7天, 单位:秒
if ( empty($default) ) $default = $w. '/avatar/default.jpg';
if ( !is_file($e) || (time() - filemtime($e)) > $t ) //当头像不存在或者文件超过7天才更新
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');
***********************************************************************************************
本想就这么用着吧,好歹快了不少,http://gtmetrix.com/评分也足足增加了11分。正高兴时,随手打开一片博文,Chrome显示连接已中断,换IE,文章依然无法打开。
首先想到的原因可能是修改主题时出问题了,立即更换其它主题,首页可以打开,所有文章都打不开,错误依旧。
难道安装插件时修改了数据库?还原最近的数据库,错误依旧……
这就郁闷了,不就改了几行代码,安装了个插件么,难道要我重装博客?!好吧,无奈之下,清空wwwroot目录,重新上传wordpress,好在国内主机速度快,3分钟后安装完毕,再次打开,问题依然没有解决!!
清除浏览器缓存,重启电脑,问题依旧……
实在没办法了,只能猜测可能是主机服务器问题!装完插件后打开首页和读者墙不是非常缓慢么,有可能这个过程造成了服务器负载加重。百度这种情况,还真有类似案例,甚至还被主机商警告过。
好吧,我错了,等上一段时间看看能不能恢复吧,折腾了好几个小时……
中午回来,博客已经正常了~~