1

Ich entwickle eine Ruby on Rails App.Gravatar blockiert in China, brauche einen Workaround

Gravatar ist in China blockiert, wo wir eine Menge Benutzer haben. Das heißt, wenn Sie von der Gravatar-Website in Ihrer App abziehen, wird Ihre Website für jemanden mit Sitz in China abstürzen.

So habe ich zwei Möglichkeiten:

  1. hochladen alle Gravatars mit den Arbeitern s3 und sie selbst
  2. Abbildung eine Abhilfe absitzen

Problemumgehung # 1 ist ein CDN wie cloudflare zu verwenden mit dem ich Gravatars bedienen kann. Es wäre toll, wenn so etwas existiert, das plug and play wäre, würde es auch die Leistung verbessern.

Workaround 2 ist es, aus dem chinesischen Gravatar-Spiegel für jeden, der sich in China befindet, basierend auf seiner IP-Adresse zu ziehen.

Problemumgehung # 3 besteht darin, die Bilder mit Gravatar Ultimate gem zu cachen, die ActiveSupport :: Cache :: SynchronizedMemoryStore.new (https://github.com/sinisterchipmunk/gravatar) verwendet. Ich bin nicht sicher, ob dies für Zehntausende von täglichen Benutzern skalierbar ist.

Problemumgehung # 4 besteht darin, den Fehler von Gravatar irgendwie im Browser zu erkennen und wenn es nicht möglich ist, den standardmäßigen (nicht bildbasierten) Avatar anzuzeigen. Wäre toll, wenn dies nach dem ersten Versuch für alle Avatare getan oder bei späteren Versuchen erinnert und erinnert würde.

Vielleicht ist die vierte die einfachste/robusteste, aber ich bin mir nicht sicher, wie es geht. Für Gravatars habe ich immer diese einfache Hilfsmethode verwendet:

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

Meinst du, dass du viele Benutzer hast, die nicht 'von' Gravatar sind, aber wer nur 'Gravatar' für ihr Profilbild 'gebrauchen'? – AntonTkachov

+0

Nein, ich meine, für jeden Nutzer mit Sitz in China wird Ihre App nicht geladen und stürzt möglicherweise sogar ab, wenn Sie versuchen, auf ein auf gravatar.com gehostetes Bild zu verlinken. –

+1

Sie könnten versuchen, die Image-Server-Seite zu laden, dann base64 die Daten kodieren und das Bild inline rendern, das sollte alle Filter herumkommen, so etwas wie: https://stackoverflow.com/questions/22717251/how-cani- Display-Png-Daten-als-Bild-Inside-in-the-Browser – DivXZero

Antwort