奥多码,点击查看详情 97CDN云盾,点击查看详情

几个WordPress本地缓存gravatar评论头像的方案

       
广告2021-06-03到期2021-07-03广告2021-06-03到期2021-07-03
       
广告2021-06-03到期2021-07-03广告2021-06-03到期2021-07-03

由于GFW的关系,使用gravatar的博客评论头像在国内会经常被墙,下面本文就分享几种方法来解决头像被墙问题。

调用ssl 头像链接

https还是没被墙的,而且速度还不错,直接调用这个最简单了。

如果你的网站启用了ssl则不需要了,否functions.php 加入如下代码

function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*/avatar/(.*)?s=([d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2"&gt;',$avatar);
return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

本地缓存代码方案

代码缓存方案,内容摘自?WP大学,以下是具体做法:

①、建立缓存目录

在wp-content 的同級目录建立一个文件夹,命名为 avatar ,设置该文件夹的权限为 0755 (如果 0755 不行,就试一下 0777)。

②、设置默认头像

备一张大小适合的默认头像,命名为”default.jpg” ,放在 avatar 文件夹里面。

③、添加缓存代码

将下面的代码复制到模板的 functions.php 文件中即可:

二、插件方案

前不久,知更鸟博主鸟哥在begin群里分享了一款将gavatar头像缓存到本地的插件,个人试用了下,发现还不错,这款插件的名字就叫:nix-gravatar-cache。貌似原版插件有点问题,鸟哥还DIY了一把。

如果,发现装了原版的有问题,那么就下载鸟哥改过的版本吧!
[button class=”download” size=”sg” href=”http://pan.baidu.com/s/1pJH3aht” title=”gavatar头像缓存到本地插件”]gavatar头像缓存到本地插件
[/button]

三、Nginx方案

我在测试这个插件的过程中,看了下生效后的头像路径,突然灵感一现:这缓存完全可以通过Nginx的proxy反向代理来缓存到本地啊!就类似于方向代理谷歌,解决被墙问题。

说干就干,经过折腾测试,发现果然好用!下面分享一下具体做法。

①、编译Nginx

Nginx 反向代理缓存需要集成?ngx_cache_purge 模块,如果没有,则需要重新编译Nginx,新增该缓存模块,并在http上下文模块中添加proxy缓存规则,比如:

proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_cache_path /tmp/cache/proxy_cache levels=1:2 keys_zone=cache_one:200m inactive=30d max_size=5g;
proxy_temp_path /tmp/cache/proxy_cache/temp;

②、Nginx配置

网站现有规则中加入如下规则,反向代理gavatar并缓存到本地:

location /avatar {
proxy_pass http://cn.gravatar.com;
proxy_redirect off;
proxy_set_header Host cn.gravatar.com;
proxy_cache cache_one;
proxy_cache_valid 200 302 304 365d;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
add_header Images-Cache "$upstream_cache_status from $host";
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off; log_not_found off; expires max;
}

③、PHP代码

在主题目录下的functions.php中插入如下代码:

//更改gavatar来源
function mytheme_get_avatar($avatar) {
$avatar = str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"www.xhsay.com",$avatar); //请修改为自己的首页域名
return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

即可将WordPress头像地址更改成自己的域名,因为头像地址二级目录字段是/avatar/,所以会匹配到我们在上一步Nginx新增的反向代理规则,从而从 cn.gravatar.com 拉取头像并缓存到服务器本地。

很明显这个方法支持各种建站程序(需要修改网站代码),比PHP代码或插件的逼格、效率都更高!而且还不会出现外部 url 地址了!

四、折腾拓展

建议静态资源使用二级域名,并拒绝cookies的写入。所以本文还能继续拓展折腾一下:将头像地址改成二级域名。其实就是新增一个 server 模块而已,非常简单,感兴趣的朋友可以自己折腾一下,本文就不多做说明了。

本文资源整理自网络,部分来源为:张戈博客及wp大学。

本文由【好易之】整理自网络!
原创文章,作者:【好易之】如转载请注明出处:https://www.zhengjiaxi.com/zxwd/jswd/69666.html
如有侵权,请邮件联系 aoduoye@qq.com 删除。
本站发布的文章及附件仅限用于学习和研究目的;不得将上述内容用于商业或非法用途,否则后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
好易之的头像好易之站长
上一篇 2020-05-27 00:32
下一篇 2020-05-27 00:32

相关推荐

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询:点击这里给我发消息

 

工作时间:周一至周五,9:30-18:30,节假日休息

关注公众号
请查看头部文章来源地址!本站所有内容均为互联网收集整理和网友上传。仅限于学习研究,切勿用于商业用途。否则由此引发的法律纠纷及连带责任本站概不承担。