Jan

4

WordPress Plugin: GravatarLocalCache

Bei den Versuchen die Ladezeit meines Blogs zu verkürzen ist ein neues Plugin für WordPress entstanden: GravatarLocalCache.

Im Grunde sagt der Titel schon alles, mit dem Plugin lassen sich die Gravatar-Bilder auf dem eigenen Server zwischenspeichern und werden von dort ausgeliefert. Doch welchen Vorteil kann das haben?

Zum einen reduziert es die Anzahl der DNS-Abfragen für das Laden einer Seite und zum anderen kann man so die Zeit, die die Gravatar-Bilder im lokalen Cache (des Browsers/Proxy’s) zwischengespeichert werden erhöhen. Wobei für letzteres man selbst zu sorgen hat, z.B. durch entsprechende Einstellungen des Webservers (was man allerdings grundsätzlich auch machen sollte, siehe hier).

Einen „kleinen Schönheitsfehler“ hat das Plugin derzeit noch, sofern viele Gravatar-Bilder in einer Seite auftauchen, die noch nicht lokal zwischengespeichert sind, so erhöht sich die Ladezeit der Seite massiv (da die Seite erst ausgeliefert wird, wenn alle Bilder vollständig auf dem lokalen Server gespeichert sind). Ich bin aber dabei dafür eine elegantere Lösung zu entwickeln (an Ideen mangelt es nicht, aber an der Zeit dafür), u.a. deshalb trägt die erste veröffentlichte Version auch die Nummer 0.9.0 (und nicht 1.0.0).

Den Download gibts bei WordPress.org: Download.

Für Bugmeldungen bzw. Erweiterungswünsche bitte den Bugtracker und für sonstige Fragen bitte das Support-Forum verwenden.

50 Kommentare bis jetzt

  1. Kommentar von hombertho:

    Klasse, dass du dein Plugin der Öffentlichkeit zur Verfügung stellst. Muss ich doch gleich mal ausprobieren.
    Lässt sich den der Schönheitsfehler vermeiden? Müssen nicht immer erst alle Gravatars beim ersten mal herunter geladen werden?
    Viele Grüße
    Thomas

  2. Kommentar von proog:

    Aktuell nein (zumindest fällt mir spontan nix ein, wie es auf die Schnelle gehen könnte)… Ich hab zwar schon ne Idee wie man es vermeiden könnte, aber das bedarf grösserer Modifikationen am Sourcecode…

    Im Grunde würde ich den Einsatz des Plugins aktuell nur bei kleineren Blogs empfehlen (bei 40 verschiedenen Kommentatoren braucht es ansonsten schonmal schnell 15 Sekunden bis alle Avatare geladen sind)…

    (ich sollte die readme vll dahingehend ergänzen)…

  3. Kommentar von Torsten:

    Ich bin auf der Suche nach genau so einem Plugin. Würde mich freuen, wenn das Plugin bald die Version 1.0.0 erreicht.
    Wäre es evtl. möglich, dass Du mich kurz kontaktierst, wenn das Plugin soweit ist?
    LG, Torsten

  4. Kommentar von proog:

    Ich werds versuchen…
    … ansonsten Empfehle ich das Abonnieren meines Feeds ;)

  5. Kommentar von Ovidiu:

    Hi. sehr schoene Idee, leider funktioniert das Plugin bei mir nicht. Habe auch im WordPress forum gepostet, kam aber keine Antwort:
    http://wordpress.org/support/topic/348128?replies=1

    Zusammenfassung:
    1. You use GravatarLocalCache a lot but the folder name is gravatarlocalcache and this confuses wordpress installations that use Linux.
    2. It doesn’t seem to work, its either my theme: hybrid theme or the W3 Total Cache even though I have emptied the cache. To be honest I guess its this plugin as its own cache folder stays empty…

    Waere nett wenn du mir weiterhelfen koenntest…

  6. Kommentar von proog:

    thx. should be fixed in 0.9.1

    (hatte deinen post im wordpress forum leider (noch) nicht gesehen gehabt)

  7. Kommentar von Ovidiu:

    Danke.
    Scheint aber mit meinem theme oder sonstwas nicht zusammenzufunktioneiren. Schau doch bitte mal auf den Link den ich heir im URL Feld hinterlassen habe, das Plugin ist aktiv, gravatars kommen aber trotzdem nicht aus dem cache…

  8. Kommentar von proog:

    Ist schwierig zu sagen, woran das nun genau scheitert. Folgende Punkte würden mir spontan dazu einfallen:

    – Das Theme lädt die Gravatare nicht über die Funktion get_avatars().
    – Es gibt ein Problem beim Herunterladen der Gravatare bzw. beim Schreiben dieser auf die Festplatte. Das Plugin versucht zwar beim Anlegen des Verzeichnisses für den Cache die Rechte entsprechend zu setzen, aber da Fehlermeldungen unterdrückt werden, würde man einen Fehler im Zweifelsfalle nicht mitbekommen.

    Ich weiss nicht wie fit du in Sachen PHP bist? Ansonsten könntest du versuchen die auskommentierten HTML-Kommentare anzeigen zu lassen, bzw. noch weitere Infos als HTML-Kommentare ausgeben um dem Problem auf die Schliche zu kommen… Falls nicht, könnte ich dir eine entsprechende Version zusammenbasteln…

  9. Kommentar von Ovidiu:

    Also ich bin kein Programmierer, habe aber meinen eigenen Root Server und in den error logs ist nichts was hier weiterhelfen koennte. Zudem sind die rechte richtig, ich kann via wordpress back end plugins installieren/loeschen d.h. Verzeichnisse werden vom Webserver richtig angelegt.

    Weitere Vorschlaege? Oder kann ich eventuell eine modifizierte Version bekomen zwecks debugging?

  10. Kommentar von proog:

    Du solltest eine E-Mail bekommen haben, mit ner „Debug“-Version ;)

  11. Kommentar von Ovidiu:

    Ok, ist eingebaut. Hab jetzt folgendes rausgefunden:

    z.B. http://pacura.ru/blog/full-moon-picnic-on-signal-hill/ hier werden die Gravatare gecached. Das Hybrid Theme ist also compatibel mit deinem Plugin.

    Aber nicht die aus der Sidebar. In der Sidebar verwende ich diese 2 Plugins die auch Gravatare laden. Kannst du dir die mal angucken? Eventuell kannst du dein Plugin erweitern, damit es die auch cached?

    – das eingebaute recent comments widget
    http://blog.zen-dreams.com/en/2008/08/06/new-wordpress-plugin-gravatar-top-commenters/

  12. Kommentar von proog:

    Das ist ja schon mal erfreulich, das es grundsätzlich funktioniert.

    Bzgl. der Widgets in der Sidebar.

    1) Im Standard-Widget von WordPress finde ich gar keine Gravatare? und bei dem Theme finde ich spontan nichts passendes. Ist da vll. doch noch ein anderes Plugin im Einsatz?

    2). Dieses Plugin bastelt die Gravatarlinks direkt. Sicherlich wäre es möglich auch diese Links herauszufiltern und zu ersetzen, allerdings würde das einen deutlichen Mehraufwand pro Seitenaufruf bedeuten. Es müsste jede Seite immer am Ende nochmals via regulären Ausdruck (oder dergleichen) gefiltert werden…
    Einfacher ist es das Plugin anzupassen. Es muss einfach nur die Funktion „get_avatar()“ verwenden (ist eine Zeile Code, die angepasst werden muss).

  13. Kommentar von proog:

    Hier mal eine angepasste Variante des 2ten Plugins:

    http://blog.splash.de/_download/zd_CommentsWidget.zip

  14. Kommentar von Ovidiu:

    Ah, danke :-)

    Hab grad gemerkt dass:

    1) dieses Plugin da werkelt: http://wordpress.org/extend/plugins/get-recent-comments/
    2) hab zu dem Plugin ne neuere Version gefunden und dir zugemailt

    Danke fuer den Support soweit!

  15. Kommentar von proog:

    Die Datei aus meinem letzten Kommentar ist ausgetauscht (1.0.1), einfach nochmal runterladen…

    und hier noch das andere Plugin:

    http://blog.splash.de/_download/get-recent-comments.zip

    ist aber auf eigene gefahr, habs nicht getestet… generell wäre es empfehlenswerter die entsprechenden autoren anzuschreiben und zu bitten die wordpress funktion „get_avatars()“ zu verwenden, denn ansonsten müsstet du die änderung bei jedem update wieder einbauen…

  16. Kommentar von Ovidiu:

    hmmm… funktioniert nicht so ganz.

    das zdcommentswidget funktioniert, allerdings sieht der output anders aus, da die get_avatars funktion das ganze anders ausgibt. Kein Problem, kann ich mit CSS beheben.

    das get-recent-comments widget, funktioniert nicht mehr. es werden keine gravatare angezeit. schau doch mal kurz auf meine Seite bitte.

    Ich glaub da ist irgendwo ein kleiner Fehelr drin.

    Natuerlich werde ich die Authoren bitte ndiese Aenderung aufzunehmen, sobald wir eine funktioneirende Loesung haben :-9

  17. Kommentar von proog:

    zu zdcommentswidget, da hab ich das borders=“0″ übersehen… sollte aber so oder so geschickter/schöner sein, das via css zu lösen…

    bzgl. get-recent-comments, doof… aber müsste ich um mehr sagen zu können, erstmal selbst installieren… ach nee, könnte an nem == statt nem = gelegen haben (doofer typo), einach nochmal downloaden…

    meinte bzgl. der autoren auch eher, das man sie direkt drum bittet das selbst zu integrieren ;) (sie wissen besser was sie an welcher stelle ihres plugins machen wollen)

  18. Kommentar von Ovidiu:

    scheint jetzt alles perfect zu funktionieren. ich melde mich mal bei den Plugin Authoren :-)

    danke fuer das geile Plugin und die Hilfe!

  19. Kommentar von Michael:

    Habs gerade installiert, kann es aber nicht nutzen. :(
    „cache directory doesn’t exists or isn’t writable.“
    Was nun?
    In der Readme steht dazu nix.

  20. Kommentar von proog:

    Ist guter Rat teuer ;)

    Nee… Es liegt wohl ein Rechteproblem vor. Wie hats du das Plugin installiert, via WordPress-Admin oder via FTP-Upload?

    und welche Rechte sind beim gravatarlocalcache-Verzeichnis eingetragen? Gibts darin ein Verzeichnis mit dem Namen „cache“? und wenn ja, welche Rechte?

  21. Kommentar von Michael:

    WordPress-Admin.
    kein Verzeichnis drin, demnach auch keine Rechte
    das Plugin-Verzeichnis hat 755

  22. Kommentar von proog:

    mmh, als erstes könntest du das neuste update versuchen (0.9.4)… wenn das nichts hilfst, könntest du den cache ordner selbst anlegen (am besten mit 0755)…

    und zusätzlich wäre noch interessant welche phpversion bei dir im einsatz ist, welche api (mod_php,cgi) verwendet wird, ob der safe_mode an ist bzw. ob suhosin aktiv ist?

  23. Kommentar von Michael:

    so, hab auf 0.9.4 geupdated und den Ordner selbst angelegt, keine Fehlermeldung mehr.

  24. Kommentar von proog:

    mmh… wird allerdings dann wohl beim nächsten Update wieder „knallen“, da beim Update das Verzeichnis dort wieder neu angelegt werden muss (sollte ich vll. auslagern, ausserhalb des Pluginverzeichnisses)…

  25. Kommentar von SPnova:

    Very good plugin! Thanks!

    I’ve added several lines for data URI support
    (Only need to check browser capability by own check_dataurl() function.)

    [185]
    // Set variables for storage
    $_name = $_img[1];
    $_file = GLCCACHEPATH.$_name.‘-‚.$_img[2].‘.jpg‘;
    $_url = GLCCACHEURL.$_name.‘-‚.$_img[2].‘.jpg‘;
    $_filebase = GLCCACHEPATH.$_name.‘-‚.$_img[2].‘.txt‘;

    // print “;

    // print ‚‚;

    if (file_exists($_file) && ((time() – filemtime($_file))/60/60) < self::$options['cache_time']) {
    // print '‚;
    if (!check_dataurl()) {
    $_retVal = $_url;
    }
    else
    {
    if (!file_exists($_filebase)) {
    $fp = fopen($_filebase, „w+“);
    fwrite($fp, „data:image/jpeg;base64,“.base64_encode(file_get_contents($_file)));
    fclose($fp);
    }
    $_retVal = file_get_contents($_filebase);
    }
    } else {

  26. Kommentar von JUlia:

    Hello, thanks for this plugin but i have upgrade to wordpress 3 RC1 and it doesn’t work anymore.

    I am the only one .

  27. Kommentar von proog:

    Did you get any error message?

    (cause the rc was released today, i didn’t have the time to test all my plugins yet)

  28. Kommentar von Ovidiu:

    hab hier ein Problem nach dem Upgrade auf wp 3.0 RC2: alle gravatar URLs sehen so aus:

    nicht 3.0 compatibel?

  29. Kommentar von proog:

    Hatte leider noch keine Zeit es zu testen.

  30. Kommentar von Ovidiu:

    sory habs kurz nach dem posten gelesen. na ja wenn du halt Zeit hast, ist nicht sonderlich eilig…

  31. Kommentar von externe Festplatte 1tb:

    hm schade dasses noch nich mit wp 3.0 funktioniert :( ist ein update geplant?

  32. Kommentar von proog:

    Ja, ein Update ist geplant (wann es fertig ist, kann ich allerdings noch nicht sagen).

  33. Kommentar von shaquille:

    This plugin is not compatible with wordpress 3.0. :(
    Please update your plugin

  34. Kommentar von proog:

    the update should be available in a few minutes… ;)

  35. Kommentar von Ovidiu:

    kurze Zwischenfrage: kann man das Plugin erweitern sodass es auch profile pics von facebook und/oder Twitter cached?
    Mittlerweile hab ich login via FaceBook und Twitter in einige Blogs integriert und da kommt das Bildchen halt nicht mehr von gravatar sondern jetzt von FaceBook…

  36. Kommentar von proog:

    Grundsätzlich geht eigentlich alles, es ist nur eine Frage des Aufwands ;)

    Kommt hier im speziellen darauf an, wie Facebook und Twitter integriert sind.

  37. Kommentar von Ovidiu:

    hm, für FB verwende ich das hier: http://www.justin-klein.com/projects/wp-fb-autoconnect die testseite ist hier falls du den „output“ mal ansehen willst: http://foo.dj/unkie/ sag mal wie aufwendig das wäre…

  38. Kommentar von proog:

    mmh… Aktuell fehlt mir dafür leider komplett die Zeit (Studium etc.).

    Wenn das Plugin eine der get_avatar() aehnliche Funktion hat, sollte es reicht einfach sein. Wenn nicht, müsste man schlimmstenfalls den Output parsen. Es wäre auch zu überlegen, ob die Funktion nicht vll. direkt durch das Plugin (also wp-fb-autoconnect) selbst bereitgestellt werden sollte und nicht durch ein extra Plugin.

  39. Kommentar von Ovidiu:

    hab den autor des anderen plugins gefragt wie’s aussieht :-) danke für die info

  40. Kommentar von Ovidiu:

    hab da grad ne geniale idee gehabt, keine ahnung obs umsetzbar ist also heir isse:

    hab grad meien seite mit google page speed getestet und das sagte mir: The following resources have identical contents, but are served from different URLs. Serve these resources from a consistent URL to save 10 request(s) and 6.6KiB.

    es handelt sich dabei um verschiedene gravatare von verschiedenen usern die eigentlich alle der „mistery man“ sind denn wenn die keinen gravatar haben zeigt mein blog automatisch den mistery man gravatar an. warum wird der eigentlich nicht 1x für alle ohne gravatar gespeichert? ist das irgendwie machbar?
    Ich hoffe ich hab das jetzt verständlich rübergebracht…

  41. Kommentar von proog:

    Die Idee dazu hatte ich auch schon, allerdings ist mir noch keine „einfache“ Methode damit umzugehen eingefallen.

  42. Kommentar von Ovidiu:

    tja, bin leider kein Programmierer und habe keine Ahnung was gravatar.com zurückliefert wenn’s keinen personalisierten Avatar findet…

  43. Kommentar von Dieter:

    Herzlichen Dank, für dieses geniale Plugin. Es verrichtet seit kurzem erfolgreich seinen Dienst in meiner WordPress-Installation. :-)

    Ich habe allerdings in meiner wp-config.php define(‚FORCE_SSL_ADMIN‘, true); mit // auskommentieren müssen, denn als ich im Backend nur https-Zugriff eingestellt hatte, schien das Plugin die Gravatare nicht zu cachen. Vielmehr kamen die dann direkt über https:://secure.gravatar.com. Wenn es dafür eine Lösung gäbe, dass das Cachen auch in diesem Falle funktioniert, würde ich mich sehr freuen.

    Beste Grüße
    Dieter

  44. Kommentar von proog:

    Ok, ist auf der ToDo-Liste ;)

  45. Kommentar von Dieter:

    Danke fürs auf die ToDo-Liste setzen sowie Deinen Kommentar auf meinem Blog zum Artikel „Gravatare cachen“.

  46. Kommentar von OnePack:

    My German is „nicht so gut“ so I will write in English. I have the same issue as Dieter. We installed a SSL certificate today and started using https for the backend. Since then all gravatars look the same in the backend. We had to disable the plugin. Thanks for the plugin anyway, good work and I hope you can fix it in the next release.

  47. Kommentar von Evi:

    Das Plugin ist der Wahnsinn! Vielen herzlichen Dank

  48. Kommentar von Sabine Bender:

    Danke für dieses tolle Plugin. Bekomme allerdings auch die Page Speed Meldung „serve resources from a consistent url“ wenn mehrere Kommentare den default Avatar benutzen.

Track-/PingBacks

  1. 【备份】目前博客在使用的插件 | 65px.com:

    […] 10、GravatarLocalCache […]

  2. 本站Wordpress应用插件推荐 | 海兰国度:

    […] 1.0.2 版本 | 英文 | 作者为 Oliver Schaal | 访问插件主页 […]

Kommentar hinterlassen

You must be logged in to post a comment.

Archiv

Zufällige Bilder

  • Kaputte Tasse
  • amazon.de: Versandkosten
  • jawstats

Kommentare (28 Tage)

Sonstiges


Bloggeramt.de