Prestashopはレイジーキャッシュと呼ばれるシステムを使用します。ここで
は/classes/SmartyCustom
クラッセのclearAllCache
とclearCache
方法です:
public function clearAllCache($exp_time = null, $type = null)
{
Db::getInstance()->execute('REPLACE INTO `'._DB_PREFIX_.'smarty_last_flush` (`type`, `last_flush`) VALUES (\'template\', FROM_UNIXTIME('.time().'))');
return $this->delete_from_lazy_cache(null, null, null);
}
public function clearCache($template_name, $cache_id = null, $compile_id = null, $exp_time = null, $type = null)
{
return $this->delete_from_lazy_cache($template_name, $cache_id, $compile_id);
}
public function delete_from_lazy_cache($template, $cache_id, $compile_id)
{
if (!$template) {
return Db::getInstance()->execute('TRUNCATE TABLE `'._DB_PREFIX_.'smarty_lazy_cache`', false);
}
$template_md5 = md5($template);
$sql = 'DELETE FROM `'._DB_PREFIX_.'smarty_lazy_cache`
WHERE template_hash=\''.pSQL($template_md5).'\'';
if ($cache_id != null) {
$sql .= ' AND cache_id LIKE "'.pSQL((string)$cache_id).'%"';
}
if ($compile_id != null) {
if (strlen($compile_id) > 32) {
$compile_id = md5($compile_id);
}
$sql .= ' AND compile_id="'.pSQL((string)$compile_id).'"';
}
Db::getInstance()->execute($sql, false);
return Db::getInstance()->Affected_Rows();
}
あなたが見ることができるように、キャッシュファイルがテーブルsmarty_lazy_cache
下のデータベースにインデックス化されています。また、キャッシュファイルは決して削除されず、テーブルからインデックスが解除されます。でもそれにはキャッシュオプションと
私のケースでは(PS 1.6.1.6)、一部のフォルダだけが削除されますが、すべてのフォルダは削除されません。 'cache/smarty/compile'では' Tools :: clearSmartyCache(); 'を呼び出すときに 'last_flush'が更新されているのを見ています –