因为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’,里面的参数需根据所需图片大小自行更改)
KVDB版本,avatars文件夹下新建kvdb.php,代码如下:
接着在你的主题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"