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

由于GFW的关系,使用gravatar的博客评论头像经常会出现“图裂特效”,这肯定是很多站长小伙伴都遇到过的困扰。网络上也很多教程,通过更换 avatar的来源,来解决图裂的问题。确实可以解决图裂困扰,但是这头像的加载速度确实还有待提高,下面本文就分享3种将头像缓存到本地的方法。

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

一、代码方案

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

①、建立缓存目录

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

②、设置默认头像

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

③、添加缓存代码

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

二、插件方案

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

如果,发现装了原版的有问题,那么就下载鸟哥改过的版本吧!

三、Nginx方案

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

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

①、编译Nginx

如果你之前已经实操了过张戈博客分享的Nginx缓存教程,相信这一步就可以忽略。

Nginx 反向代理缓存需要集成 ngx_cache_purge 模块,如果没有,则需要重新编译Nginx,具体做法请参考张戈博客之前分享的文章:

为网站开启Nginx缓存加速,支持html伪静态页面》之代理模式,新增该缓存模块,并在http上下文模块中添加proxy缓存规则,比如:

②、Nginx配置

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

③、PHP代码

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

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

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

四、折腾拓展

上一篇文章,张戈博客分享了目前在用的优化方案,里面有一条是建议静态资源使用二级域名,并拒绝cookies的写入。所以本文还能继续拓展折腾一下:将头像地址改成二级域名。比如右键查看张戈博客评论头像,可以发现已经变成 res.zhangge.net 了。其实就是新增一个 res.zhangge.net 的 server 模块而已,非常简单,感兴趣的朋友可以自己折腾一下,本文就不多做说明了。

文件下载

博客小广告:网络加速服务推荐(点击图片查看)

网络加速

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:26   其中:访客  21   博主  5

  1. 陌小雨 5 来自天朝的朋友 火狐浏览器 Windows 7 广东省广州市 联通

    很全面,一站式解决,不错!

  2. 西贝博客 4 来自天朝的朋友 Safari浏览器 Mac OS X 10_10_3 河南省 移动

    为什么每次来了都需要输入用户信息,有没有吧案发解决一下?

    • 张戈 [博主] 来自天朝的朋友 Safari浏览器  Android 4.4.2 NX40X Build/KOT49H 广东省深圳市 联通

      你自己的问题,我博客js记录信息用了一年多了。要不就是浏览器禁止了cookies记忆,要不就不是同一个环境。

  3. 胡歌网摘 4 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省温州市 电信

    Nginx反代的方法不错,学习了。

  4. koty 1 来自天朝的朋友 QQ浏览器  Android 4.1.2 HTC 608t Build/JZO54K 广东省深圳市福田区 电信

    张戈,请问一下为什么我网站的文章分享到微信朋友圈后会被转码,你的为什么不会?

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      我还没分享过微信,没见过这个问题。

  5. 网站目录提交 0 来自天朝的朋友 谷歌浏览器 Windows 7 广东省茂名市高州市 电信

    很全面,一站式解决,不错

  6. 麓谷微澜 1 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省长沙市 电信

    我用的是新浪的sae做的WordPress,就是延迟很高

  7. boke123导航 4 来自天朝的朋友 谷歌浏览器 Windows XP 广西南宁市 /桂林市

    我现在用的是第一种,不过这个文件夹是放在主题里面比较方便

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      嗯,第一种简单易用。

  8. 友邻阅读网 3 来自天朝的朋友 谷歌浏览器 Windows 7 江苏省苏州市 电信

    用了第一个方法,超级棒。谢谢

  9. 友邻阅读网 3 来自天朝的朋友 谷歌浏览器 Windows 7 江苏省苏州市 电信

    识别浏览器用的那个插件,还是纯代码

  10. 明月登楼 5 来自天朝的朋友 谷歌浏览器 Windows 8.1 河南省南阳市 联通

    我比较喜欢第一种方案!简单实用! :grin:

  11. 同盟源 5 来自天朝的朋友 谷歌浏览器 Windows 7 安徽省芜湖市 电信

    nginx反向代理,我服务器国内的反代cn.gxxx的

  12. 牧羊人 5 来自天朝的朋友 谷歌浏览器 Windows 7 重庆市 电信

    这两天多说好像是不能外链了,折腾来折腾去,发现:Gravatar 除了给中国版,直接替换成 cn.gravatar.com 就很好用了。。。

    请问张戈,像咱们的头像源码部分如下:

    第一个SRC 是我们看到的头像,第二个 srcset 一般是用不到的,该如何修改才能去掉第二个呢?

  13. 牧羊人 5 来自天朝的朋友 谷歌浏览器 Windows 7 重庆市 电信

    评论系统把 代码过滤掉了。。。

  14. 测试 1 来自天朝的朋友 谷歌浏览器 Windows 10 河南省郑州市 联通

    试下这个····

  15. 晨夜 2 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省长沙市 联通

    大神 你好!
    请问你的域名:res.zhangge.net是直接绑定在zhangge.net上的,还是使用七牛云镜像或者使用的res.zhangge.net反代的zhangge.net

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Mac OS X 10_11_3 广东省深圳市 电信

      前者

  16. 晨夜 2 来自天朝的朋友 谷歌浏览器  Android 6.0.1 MI 4W Build/MMB29M 湖南省郴州市 联通

    按照http://zhangge.net/5042.html开启了缓存,也配置了多站点,但是搞反代的时候报错,去处 proxy_cache cache_web2;就可以,这样是不是就不缓存,怎么解决啊大神,谢谢! 面前a使用了很多大神博客的技术在网站上十分感谢

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Mac OS X 10_11_3 广东省深圳市 电信

      将站点配置文件打包发到我邮箱 ge#zhangge.net 看看
      #换成@

  17. 小C博客 4 来自天朝的朋友 QQ浏览器 Windows 7 浙江省杭州市 电信

    张哥,proxy_pass地址能带参数吗?

  18. 乐朦 0 来自天朝的朋友 谷歌浏览器 Windows 10 青海省西宁市 电信

    学习了,谢谢分享。

  19. 里维斯社 1 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市萝岗区 电信

    gravatar头像昨天提交,在别人网站评论不显示头像,网上查说是需要时间缓存,我看博主的这个网站显示出来了,不知道是什么原因。

  20. 君宇网络 1 来自天朝的朋友 Safari浏览器 iPhone iPhone OS 11_0_3 like Mac OS X) AppleWebKit 广东省广州市 电信

    请问博主,如何缓存国内第三登陆(微信 微博 QQ)头像到本地呢。我的网站有用第三方登录,可以获取用户头像,但是用了是一种方法后,这些头像就不存在了 只出现了代码 网址 laowei8.co m

加载中,请稍候...