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.
4. Januar 2010 um 21:36:03
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
4. Januar 2010 um 21:43:52
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)…
6. Januar 2010 um 20:01:44
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
7. Januar 2010 um 17:44:53
Ich werds versuchen…
… ansonsten Empfehle ich das Abonnieren meines Feeds ;)
20. Januar 2010 um 12:44:50
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…
20. Januar 2010 um 13:26:38
thx. should be fixed in 0.9.1
(hatte deinen post im wordpress forum leider (noch) nicht gesehen gehabt)
20. Januar 2010 um 16:05:43
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…
20. Januar 2010 um 16:29:58
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…
25. Januar 2010 um 06:59:10
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?
25. Januar 2010 um 13:15:13
Du solltest eine E-Mail bekommen haben, mit ner „Debug“-Version ;)
26. Januar 2010 um 10:08:47
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/
26. Januar 2010 um 11:32:23
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).
26. Januar 2010 um 11:50:11
Hier mal eine angepasste Variante des 2ten Plugins:
http://blog.splash.de/_download/zd_CommentsWidget.zip
26. Januar 2010 um 15:20:12
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!
28. Januar 2010 um 14:03:14
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…
28. Januar 2010 um 17:43:04
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
28. Januar 2010 um 17:52:23
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)
28. Januar 2010 um 19:59:18
scheint jetzt alles perfect zu funktionieren. ich melde mich mal bei den Plugin Authoren :-)
danke fuer das geile Plugin und die Hilfe!
14. Februar 2010 um 14:48:29
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.
14. Februar 2010 um 16:37:26
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?
14. Februar 2010 um 20:07:59
WordPress-Admin.
kein Verzeichnis drin, demnach auch keine Rechte
das Plugin-Verzeichnis hat 755
14. Februar 2010 um 20:22:14
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?
14. Februar 2010 um 21:23:58
so, hab auf 0.9.4 geupdated und den Ordner selbst angelegt, keine Fehlermeldung mehr.
14. Februar 2010 um 23:41:29
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)…
5. Mai 2010 um 16:55:37
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 {
28. Mai 2010 um 17:34:05
Hello, thanks for this plugin but i have upgrade to wordpress 3 RC1 and it doesn’t work anymore.
I am the only one .
28. Mai 2010 um 21:22:14
Did you get any error message?
(cause the rc was released today, i didn’t have the time to test all my plugins yet)
8. Juni 2010 um 02:45:07
hab hier ein Problem nach dem Upgrade auf wp 3.0 RC2: alle gravatar URLs sehen so aus:
nicht 3.0 compatibel?
8. Juni 2010 um 10:47:32
Hatte leider noch keine Zeit es zu testen.
8. Juni 2010 um 12:58:13
sory habs kurz nach dem posten gelesen. na ja wenn du halt Zeit hast, ist nicht sonderlich eilig…
9. Juni 2010 um 15:30:07
hm schade dasses noch nich mit wp 3.0 funktioniert :( ist ein update geplant?
9. Juni 2010 um 21:49:04
Ja, ein Update ist geplant (wann es fertig ist, kann ich allerdings noch nicht sagen).
17. Juni 2010 um 19:50:36
This plugin is not compatible with wordpress 3.0. :(
Please update your plugin
18. Juni 2010 um 09:39:26
the update should be available in a few minutes… ;)
23. Oktober 2010 um 15:10:35
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…
23. Oktober 2010 um 15:39:24
Grundsätzlich geht eigentlich alles, es ist nur eine Frage des Aufwands ;)
Kommt hier im speziellen darauf an, wie Facebook und Twitter integriert sind.
23. Oktober 2010 um 17:28:59
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…
26. Oktober 2010 um 23:40:18
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.
28. Oktober 2010 um 21:58:53
hab den autor des anderen plugins gefragt wie’s aussieht :-) danke für die info
3. November 2010 um 16:28:46
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…
5. November 2010 um 21:32:30
Die Idee dazu hatte ich auch schon, allerdings ist mir noch keine „einfache“ Methode damit umzugehen eingefallen.
9. November 2010 um 17:53:34
tja, bin leider kein Programmierer und habe keine Ahnung was gravatar.com zurückliefert wenn’s keinen personalisierten Avatar findet…
16. Januar 2011 um 14:04:56
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
17. Januar 2011 um 10:37:46
Ok, ist auf der ToDo-Liste ;)
17. Januar 2011 um 12:10:24
Danke fürs auf die ToDo-Liste setzen sowie Deinen Kommentar auf meinem Blog zum Artikel „Gravatare cachen“.
26. Oktober 2011 um 14:55:18
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.
26. Februar 2012 um 19:38:21
Das Plugin ist der Wahnsinn! Vielen herzlichen Dank
10. März 2012 um 20:53:50
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.