Closed do-while closed 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
Anders lassen sich die Bilder aber nicht erkennen oder? Ich denke Option b) ist der richtige Ansatz.
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.
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
?
Der Dateiname im Pfad wurde aus SEO-Gründen hinzugefügt.
Behoben in 7d36f9ed819809b866b56f4f372bd29e4d020e20.
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.