Gravatar 头像缓存

Gravatar 是 wp 为博客提供的全球头像系统.
然而大局域网常常加载缓慢或无法连接.
于是将之缓存, 以确保头像可用.

import fs     from 'fs'
import https  from 'https'
import crypto from 'crypto'

function getGravatar(email, size) {
  let md5 = crypto.createHash('md5')
  let str = email ? md5.update(email.toLowerCase()).digest('hex') : 'default'
  let 本地路径 = './' + str + '.jpg'
  let 网络路径 = `https://secure.gravatar.com/avatar/${str}.jpg?s=${size}&d=mm&r=g`
  if (!fs.existsSync(本地路径)) {
    https.get(网络路径, res => res.pipe(fs.createWriteStream(本地路径)))
  }
  return '/api/avatar/' + str + '.jpg'
}

console.log(getGravatar('huan0016@gmail.com', 128))

简易实现, 并未处理头像更新问题, 一般还需要定期替换或特定条件触发检查更新
另外也可以通过镜像站来调取头像(通常有CDN加速)
虽然镜像站的解决方案很好, 却可能被其跟踪统计浏览记录, 因此并不是最优选择

镜像服务器

名称 地址
V2EX https://cdn.v2ex.com/gravatar/
极客族 https://sdn.geekzu.org/avatar/
loli https://gravatar.loli.net/avatar/
inwao https://gravatar.inwao.com/avatar/

--- satori ---

Last