2017-01-23 2 views
0

Ich habe einige ernsthafte Probleme mit OpenCart-Cache-Image. Ich habe eine Software, die die Informationen (Produkte, Kategorien) usw. mit Opencart synchronisiert.Opencart löschen Bild/Cache tut nichts

Immer wenn ich ein Produkt aktualisiere, das bereits ein Bild hat, ersetze ich einfach (im FTP) das Bild - da es die gleiche Beschreibung (die ID) hat.

Und so weiter. Was passiert, ist, dass Opencart mit dem gleichen Bild fortfährt wie bei der ersten Synchronisierung. Dies ist kein Browser-Problem, da verschiedene Browser dieselbe erste Bildsynchronisierung anzeigen.

Opencart zwingt das Bild beim Öffnen der Produktseite zur Größenanpassung und erstellt je nach Bildgröße eine neue interne Datei wie 19301-500x445.jpg. Das passiert nur, wenn das Bild nicht bereits existiert!

// Within the file catalog/model/tool/image 

$image_old = $filename; 
$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '.' . $extension; 

if (!is_file(DIR_IMAGE . $image_new) || (filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new))) 
{ 
} 

kann ich verwalten Cache Problem zu vermeiden, indem die time() im Dateinamen einstellen, aber auf diese Weise wird OpenCart immer wieder neue Bilder unnötig erstellen.

$image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '-' . time() . '.' . $extension; 

Löschen image/cache/myfolder/* hat keinerlei Wirkung.

Antwort

0

Gelöst.

meine Funktion auf die folgende Änderung:

if(filectime(DIR_IMAGE . $image_old) > filectime(DIR_IMAGE . $image_new) || !file_exists(DIR_IMAGE . $image_new)) 
{ 
    if(file_exists(DIR_IMAGE . $image_new)) 
     $image_new = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . (int)$width . 'x' . (int)$height . '-' . time() . '.' . $extension; 
} 

Auf diese Weise erzeugt sie nur ein einziges Mal das Bild.