2017-01-23 7 views
0

Opencartキャッシュイメージに重大な問題があります。私は情報(製品、カテゴリ)などをOpencartと同期させるソフトウェアを持っています。Opencartで画像/キャッシュを削除すると、何もしません。

イメージが既にある製品を更新するときは、イメージ(ID)が同じであるため、イメージを置き換える(FTPで)だけです。

--- First upload product --- 
image/myfolder/id_of_image.jpg 

--- Second upload product (update) --- 
image/myfolder/id_of_image.jpg -> It is replaced 

--- Third upload product (update) --- 
image/myfolder/id_of_image.jpg -> It is replaced 

など。何が起こるかは、Opencartが最初の同期で同じ画像セットを続けていることです。異なるブラウザーで同じ最初の画像同期が表示されるため、これはブラウザーの問題ではありません。

Opencartは、製品ページを開くたびにイメージのサイズを変更し、イメージサイズに応じて19301-500x445.jpgのような新しい内部ファイルを作成します。 これはサイズイメージが既に存在しない場合にのみ発生します

// 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))) 
{ 
} 

私は、ファイル名にtime()を設定することにより、キャッシュの問題を回避するために管理することができますが、この方法でopencartは常に不必要に新しいイメージを作成します。

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

image/cache/myfolder/*を削除しても何の効果もありません。

答えて

0

解決済み。

を次のように私の機能を変更し

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; 
} 

この方法では、それは一度だけ画像を生成します。

関連する問題