contao / core

Contao 3 → see contao/contao for Contao 4
GNU Lesser General Public License v3.0
490 stars 214 forks source link

Dateiverwaltung löscht Cache-Bilder nicht beim Umnennen #6641

Closed do-while closed 10 years ago

do-while commented 10 years ago

Wenn ich ein Bild in der Dateiverwaltung umbenenne, wird ein neues Thumb im Cache angelegt -> korrekt. Nenne ich jetzt ein anderes Bild so wie das gerade Umbenannte hieß, dann wird das alte Thumb als kleine Ansicht verwendet. Das korrekte Bild bekomme ich nicht zu sehen. Evtl. hat es damit zu tun, dass die Bilder auch noch gleich groß sind. Abhilfe ist nur Löschen des Bildercache - sehr unschön!

In der Demo kann ich keine Dateien umbenennen, daher hier der Weg: 1) ich nenne campus_hall.jpg in campus_hall2.jpg um 2) ich nenne campus_overview.jpg in campus_hall.jpg um Das Bild zeigt jetzt die _hall, was jetzt _hall2 ist.

Ich hoffe, das Problem ist verständlich geschildert.

leofeyer commented 10 years ago

Ich kann das Problem bestätigen, aber ich weiß nicht so recht, wie man es am besten löst. Theoretisch müsste man alle Vorschaubilder das alten Bildes löschen, aber da es keine Verknüpfung zwischen einem Bild uns seinen Thumbnails gibt, bleiben aus meiner Sicht zwei Möglichkeiten:

a) Man löscht den kompletten Bilder-Cache b) Man löscht alle Bilder, die den Dateinamen enthalten (also assets/images/*/$file-[a-f0-9]{8}.$extension)

Möglichkeit a) halte ich für sehr ineffektiv, weil hier potentiell Hunderte oder Tausende an Vorschaubildern gelöscht werden, nur weil ein Originalbild umbenannt wurde. Möglichkeit b) ist allerdings auch selbst mit einem gefilterten, rekursiven Iterator nicht die effektivste, weil ja einmal alle Cache-Dateien durchlaufen werden müssen.

@contao/workgroup-core

psi-4ward commented 10 years ago

Anders lassen sich die Bilder aber nicht erkennen oder? Ich denke Option b) ist der richtige Ansatz.

do-while commented 10 years ago

Ich denke auch, dass b) die bessere Variante ist. Ich weiß nicht, wie der Cache aufgebaut ist, muss man wirklich alle Unterverzeichnisse durchsuchen? Man könnte ja auch eine Art Cache-Blacklist machen, die im Hintergrund langsam abgearbeitet wird, die muss dann aber auch beim Abruf einer Cachedatei berücksichtigt werden. Ist wahrscheinlich zu aufwändig.

aschempp commented 10 years ago

Warum verwenden wir nicht ein md5_file auf Datei statt Pfad im Dateinamen? Die Bilder sollten ja relativ klein sein, und damit ein Hash kein Problem? Bzw. wir haben den potentiell bereits in tl_files?

leofeyer commented 10 years ago

Der Dateiname im Pfad wurde aus SEO-Gründen hinzugefügt.

leofeyer commented 10 years ago

Behoben in 7d36f9ed819809b866b56f4f372bd29e4d020e20.