1

我正在开发一个Ruby on Rails应用程序。Gravatar在中国被封锁,需要一个解决方法

Gravatar在中国受阻,我们有大量的用户。这意味着如果您从应用程序的Gravatar网站中提取,您的网站将会崩溃/无法加载中国任何人。

所以,我有两个选择:

  1. 上传所有gravatars到S3与工人并为他们自己
  2. 找出一个解决办法

解决方法1是使用CDN喜欢的CloudFlare我可以用来服务Gravatars。如果存在即插即用的东西,那将会很棒,它也会提高性能。

解决方法#2将根据中国用户的IP地址为中国境内的任何人提取中国镜像镜像。

解决方法#3是使用Gravatar Ultimate gem(使用ActiveSupport :: Cache :: SynchronizedMemoryStore.new(https://github.com/sinisterchipmunk/gravatar))缓存图像。我不确定这是否可以为成千上万的日常用户扩展。

解决方法#4将以某种方式在浏览器中检测到Gravatar发生的故障,并且它无法显示默认(非基于图像的)头像。如果在第一次尝试之后为所有的头像做过这些事情,或者在后续的尝试中记住并记住它,那将会很棒。

也许第四个是最简单/最强大的,但我不知道该怎么做。对于gravatars,我一直用这个简单的辅助方法:

def gravatar_url(user) 
    gravatar_id = Digest::MD5.hexdigest(user.email.downcase) 
    "http://gravatar.com/avatar/#{gravatar_id}.png?d=identicon&s=150" 
end 
+0

你的意思是说你有很多用户,不是'from'gravatar,而是''使用'* gravatar作为他们的个人资料图片? – AntonTkachov

+0

不,我的意思是任何基于中国的用户,如果您尝试链接到gravatar.com上托管的图片,您的应用程序将无法加载,甚至可能会崩溃。 –

+1

您可以尝试加载图像服务器端,然后base64编码数据并呈现图像内联,应该绕过任何过滤器,如:https://stackoverflow.com/questions/22717251/how-cani-i-显示PNG-数据即一个图像-内部功能于所述浏览器 – DivXZero

回答

相关问题