0%

SAE WordPress Gravatar头像缓存

Gravatar
因为SAE没有本地写的权限,网上很多人的折腾代码不能直接使用,我一直想要个本地缓存头像的功能,网上搜了下有Storage版的。用了下感觉略慢。后来想到SAE有KVDB,算下来比Storage还便宜,速度的话按照SAE的说法应该也比较快。于是就有了本文的方法。但是SAE的KVDB还不太稳定,经常出问题,我又修改成了Memcache版。速度飞快 但是相应的缓存消耗的云豆也比较高 所以各位朋友自己选择,如果云豆足够的话Memcache版也完全不是问题。粗略计算了下5M的缓存,应该可以存储1000+个头像。好了 废话不说了 直接看方法吧。

首先在WP的根目录下创建 avatars文件夹。在里面放一个“default.png”的图片文件 作为没有头像时的默认头像。
Memcache版本,avatars文件夹下新建memcache.php,代码如下:
(第13行’?s=36&d=36&r=G’,里面的参数需根据所需图片大小自行更改)
Memcache版本

KVDB版本,avatars文件夹下新建kvdb.php,代码如下:
KVDB版本

接着在你的主题functions.php文件中添加如下代码 来HOOK WP自带的头像函数:

//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 = home_url(); // $w = get_bloginfo('url');
     $avatar = strtr($avatar, array($g => $w.'/avatar/'.$f. '.png'));
     return $avatar;
 }
add_filter('get_avatar', 'my_avatar');

最后来配置 SAE的 config.yaml

handle:
    - rewrite: if ( path ~ "avatar/(.+)$" ) goto "avatars/kvdb.php?id=$1"