Opencart删除图像/缓存什么都不做

时间:2017-01-23 15:04:47

标签: php image caching opencart

我在使用Opencart缓存映像时遇到了一些问题。我有一个软件可以将信息(产品,类别)等与Opencart同步。

每当我更新已经有图像的产品时,我只是替换(在FTP中)图像 - 因为它具有相同的描述(id)。

--- 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/*不会产生任何影响。

1 个答案:

答案 0 :(得分: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;
}

这样,它只生成一次图像。