image_manager cache probleme

Jede Art von Fehler die REDAXO betreffen.

image_manager cache probleme

Beitragvon matthias@wiedmer » 5. Apr 2011, 16:37

hallo,

nach eingem email verkehr haben jandeluxe und ich entdeckt, dass sich ein fehler im image_manager addon befindet. das problem ist folgendes:
alle bilder werden zwar in generated/files gecached allerdings wird bei jedem neuladen der seite das bild neu geschickt. es werden also keine entsprechenden header mitgeschickt die dies verhindern würden, obwohl der image_manager technisch dazu in der lage ist.
das problem liegt in der datei class.rex_image_cacher.inc.php zeile 78 funktion sendImage.
dort wird das cachebild erstellt und versendet ohne die funktionen des image_managers zu benutzen.
ich weiss nun nicht ob dies bewusst so gewählt wurde oder ob es sich um ein problem handelt.

bitte die Lösung von Jan benutzen:

class.rex_image_cacher.inc.php > function sendImage()

Code: Alles auswählen
// ORIGINAL

// send file
$image->sendHeader();
readfile($cacheFile);


Code: Alles auswählen
// PATCH + type fix aus http://bugs.redaxo.de/showreport.php?bugid=161

// send file
$image->sendHeader();
$format = $image->getFormat() == 'JPG' ? 'jpeg' : strtolower($image->getFormat());
rex_send_file($cacheFile,'image/'.$format);


lg
matthias
Zuletzt geändert von matthias@wiedmer am 6. Mai 2011, 18:45, insgesamt 1-mal geändert.
matthias@wiedmer
 
Beiträge: 31
Registriert: 22. Sep 2009, 10:57

Re: image_manager cache probleme

Beitragvon Markus.Lorch » 8. Apr 2011, 09:54

Hm. Ich hab das gleiche Problem - war mir nur seither nicht wichtig genug mich darum zu kümmern.

Dein provisorischer Fix: Das Funktioniert dann aber nicht mehr mit Bildern deren Cache noch nicht erstellt wurde? Oder?

Na... ich werds einfach ausprobiern ;)

Edit: Hm. Nach der Änderung werden bei mir die Bilder trotzdem jedes mal neu geladen...
Zuletzt geändert von Markus.Lorch am 8. Apr 2011, 20:44, insgesamt 1-mal geändert.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 635
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: image_manager cache probleme

Beitragvon matthias@wiedmer » 8. Apr 2011, 10:02

doch, die funktion cached wenn das bild noch nicht gechaced ist und gibt dir dann das bild, bzw wenn das bild gecached ist die gecachte version und auch mit den entsprechenden headern.
ich vermute, dass die funktion genau dafür gedacht war, ich bin mir nur unsicher ob sie wegen fehlers/problems dann doch nicht verwendet wurde. bis jetzt hatte ich aber noch keine probleme. besser wir warten mal was die entwickler sagen. jan hat gesagt er wird das wochenende das problem mal genauer durchleuchten.

lg
matthias
matthias@wiedmer
 
Beiträge: 31
Registriert: 22. Sep 2009, 10:57

Re: image_manager cache probleme

Beitragvon Markus.Lorch » 8. Apr 2011, 22:53

okay. Du hast recht - das flutsch deutlich besser ;) Auch wenn deine angegeben Zeilenzahlen mal so gar nicht gepasst haben *ggggg*. Zumindest im Standard Image_Manager.
Grüße,
Markus Lorch

Tschüssle sagt Herr Nüssle
Benutzeravatar
Markus.Lorch
 
Beiträge: 635
Registriert: 21. Okt 2007, 16:22
Wohnort: Walheim

Re: image_manager cache probleme

Beitragvon matthias@wiedmer » 11. Apr 2011, 08:21

sorry! hatte vergessen zu erwähnen das ich den imagemanager ep benutze. allerdings haben beide addons orginal und erweiterung das selbe problem :)

lg
matthias
matthias@wiedmer
 
Beiträge: 31
Registriert: 22. Sep 2009, 10:57

Re: image_manager cache probleme

Beitragvon jeandeluxe » 26. Apr 2011, 13:45

matthias@wiedmer hat geschrieben:ich habe einfachheits halber in der datei config.inc.php des image_managers ab zeile 72 bis 77 alles auskommentiert und folgendes eingefügt:
$image = rex_image_manager::getImageCache($rex_img_file, $rex_img_type);
$image->send();


10/10 für Waghalsigkeit.. ,-) allerdings: hier funktionert das nicht wirklich.. zumindest zerreißt es mir PNGs mit alphakanal: eigentlich transparente Bereiche werden plötzlich schwarz ausgegeben.. habt ihr das nicht?

Dunno was das Problem dabei im Detail sein mag, ichs habs hier jetzt - u.a. auch weil ich Matthias shortcut zu waghalsig finde ;) - wie folgt gelöst..:
class.rex_image_cacher.inc.php > function sendImage()

Code: Alles auswählen
// ORIGINAL

// send file
$image->sendHeader();
readfile($cacheFile);


Code: Alles auswählen
// PATCH

// send file
$image->sendHeader();
$format = $image->getFormat() == 'JPG' ? 'jpeg' : strtolower($image->getFormat());
rex_send_file($cacheFile,'image/'.$format);


Das tut hier..

lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: image_manager cache probleme

Beitragvon matthias@wiedmer » 27. Apr 2011, 14:28

no risk no fun ;) bei mir stimmt soweit alles, aber ich teste das ganze mal mit pngs.

den code bin ich ja damals durchgegangen und soweit ich mich erinnern kann sollte die eine funktion ja genau das machen was an dem punkt verlangt ist, bzw was dort auch gemacht wird.
ich wollte dazu von den addonerstellen wissen warum/wieso diese nicht verwendet wird. also Markus oder Jan :)

wird mit deiner lösung jetzt nicht der header 2 mal gschickt? (habs nicht kontrolliert)

aber solang das ding so funktioniert bin ich zufrieden =)

lg
Matthias
matthias@wiedmer
 
Beiträge: 31
Registriert: 22. Sep 2009, 10:57

Re: image_manager cache probleme

Beitragvon jeandeluxe » 27. Apr 2011, 16:19

matthias@wiedmer hat geschrieben:wird mit deiner lösung jetzt nicht der header 2 mal gschickt? (habs nicht kontrolliert)

hab ich auch nicht.. könnt sein, ja.. aber in firebug zumindest paßts im Endergebnis. ;)

matthias@wiedmer hat geschrieben:aber solang das ding so funktioniert bin ich zufrieden =)


probier mal meinen edit bei dir..

lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: image_manager cache probleme

Beitragvon jeandeluxe » 4. Mai 2011, 11:25

jeandeluxe hat geschrieben:
matthias@wiedmer hat geschrieben:ich habe einfachheits halber in der datei config.inc.php des image_managers ab zeile 72 bis 77 alles auskommentiert und folgendes eingefügt:
$image = rex_image_manager::getImageCache($rex_img_file, $rex_img_type);
$image->send();


10/10 für Waghalsigkeit.. ,-) allerdings: hier funktionert das nicht wirklich.. zumindest zerreißt es mir PNGs mit alphakanal: eigentlich transparente Bereiche werden plötzlich schwarz ausgegeben.. habt ihr das nicht?

Dunno was das Problem dabei im Detail sein mag, ichs habs hier jetzt - u.a. auch weil ich Matthias shortcut zu waghalsig finde ;) - wie folgt gelöst..:
class.rex_image_cacher.inc.php > function sendImage()

Code: Alles auswählen
// ORIGINAL

// send file
$image->sendHeader();
readfile($cacheFile);


Code: Alles auswählen
// PATCH + type fix aus http://bugs.redaxo.de/showreport.php?bugid=161

// send file
$image->sendHeader();
$format = $image->getFormat() == 'JPG' ? 'jpeg' : strtolower($image->getFormat());
rex_send_file($cacheFile,'image/'.$format);


Das tut hier..

lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: image_manager cache probleme

Beitragvon matthias@wiedmer » 6. Mai 2011, 18:47

hallo jan,

deine lösung geht auf jeden fall in ordnung, das was ich hingeknallt habe hat in der tat pngs zerstört... :(
habe das jetzt aus meinem ersten post rausgenommen und mit deinem lösungsanstz ersetzt.

danke und schönes wochenende!
matthias@wiedmer
 
Beiträge: 31
Registriert: 22. Sep 2009, 10:57

Re: image_manager cache probleme

Beitragvon jeandeluxe » 6. Mai 2011, 19:03

matthias@wiedmer hat geschrieben:deine lösung geht auf jeden fall in ordnung, ..


Danke für die Rückmeldung.. hast dus live im Einsatz also?
Ich habs in momentan 3 Installationen drin.. läuft soweit einwandfrei.

Im aktuellen ImageManager EP ist u.a. auch der fix drin..

lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: image_manager cache probleme

Beitragvon matthias@wiedmer » 6. Mai 2011, 19:09

hallo,

ich habe das jetzt auf 4 Seiten live.
Mir ist aber grad was aufgefallen... das ganze wird gzip gschickt %)
sehr performance lastig und für bilder total umsonst, dadurch hast dann auch total lange wartezeiten bis der server das bild überhaupt schickt....
das muss umbedingt noch raus. ich kann da nächste woche mal schaun.

schönes wochende noch!
matthias@wiedmer
 
Beiträge: 31
Registriert: 22. Sep 2009, 10:57

Re: image_manager cache probleme

Beitragvon jeandeluxe » 6. Mai 2011, 19:26

matthias@wiedmer hat geschrieben:Mir ist aber grad was aufgefallen... das ganze wird gzip gschickt %)


Hast du $REX['USE_GZIP'] in der master entsprechend gesetzt?

lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: image_manager cache probleme

Beitragvon jeandeluxe » 6. Mai 2011, 19:37

jeandeluxe hat geschrieben:
matthias@wiedmer hat geschrieben:Mir ist aber grad was aufgefallen... das ganze wird gzip gschickt %)


Hast du $REX['USE_GZIP'] in der master entsprechend gesetzt?


Yup, rex_send_file() gibt durch an rex_send_content(), und die Funktion entscheided anhand $REX['USE_GZIP'].. hm.. nach content-art trennen läßt sich das auf den ersten blick nicht.

lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Re: image_manager cache probleme

Beitragvon jeandeluxe » 16. Mai 2011, 23:12

jeandeluxe hat geschrieben:Yup, rex_send_file() gibt durch an rex_send_content(), und die Funktion entscheided anhand $REX['USE_GZIP'].. hm.. nach content-art trennen läßt sich das auf den ersten blick nicht.


OMG.. kurze arme, keine Kekse ;) .. ist noch ungetestet, aber sollt so funktionieren:
Code: Alles auswählen
/** PATCH
* CacheControl headers
* type fix aus http://bugs.redaxo.de/showreport.php?bugid=161
* gzip workaround
*/

$tmp = $REX['USE_GZIP'];
$REX['USE_GZIP'] = false;

// send file
$image->sendHeader();
$format = $image->getFormat() == 'JPG' ? 'jpeg' : strtolower($image->getFormat());
rex_send_file($cacheFile,'image/'.$format);

$REX['USE_GZIP'] = $tmp;


lg,
Jan
mark your solved threads [SOLVED]™ promotion tour.. | Redaxo API Docu | rexdev.de | "You start with some money.."
IT'S A MARATHON. NOT A SPRINT. UNLESS IT IS A SPRINT, THEN SPRINT!
Benutzeravatar
jeandeluxe
 
Beiträge: 1933
Registriert: 29. Sep 2005, 09:50
Wohnort: Hamburg

Nächste

Zurück zu Bugs [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast