来自“自定义变量”功能的值
System -> Custom Variables
据我所知,不是专门缓存的。如果它可以帮助您解决客户的问题,我不会让这阻止您使用它们。其他事情会很快导致性能问题。
如果您查看 Magento 使用这些变量的主要位置
#File: app/code/core/Mage/Core/Model/Email/Template/Filter.php
public function customvarDirective($construction)
{
$customVarValue = '';
$params = $this->_getIncludeParameters($construction[2]);
if (isset($params['code'])) {
$variable = Mage::getModel('core/variable')
->setStoreId($this->getStoreId())
->loadByCode($params['code']);
$mode = $this->getPlainTemplateMode()?Mage_Core_Model_Variable::TYPE_TEXT:Mage_Core_Model_Variable::TYPE_HTML;
if ($value = $variable->getValue($mode)) {
$customVarValue = $value;
}
}
return $customVarValue;
}
您可以看到它们加载了以下链式方法调用
$variable = Mage::getModel('core/variable')
->setStoreId($this->getStoreId())
->loadByCode($params['code']);
所以你知道在这个代码级别没有缓存。如果跳转到core/variable
模型类文件
#File: app/code/core/Mage/Core/Model/Variable.php
public function loadByCode($code)
{
$this->getResource()->loadByCode($this, $code);
return $this;
}
你可以看到theres没有缓存逻辑loadByCode
方法中没有缓存逻辑。对整个文件的快速 grep 也没有提到字符串“缓存”。
然后,如果您查看模型资源
#File: app/code/core/Mage/Core/Model/Resource/Variable.php
public function loadByCode(Mage_Core_Model_Variable $object, $code)
{
if ($result = $this->getVariableByCode($code, true, $object->getStoreId())) {
$object->setData($result);
}
return $this;
}
再次没有特殊的缓存逻辑。此外,通过此文件对字符串“cache”进行 grep 分析,什么也没有显示。
最后,在否则为空的控制器操作中运行以下代码将转储变量值。
public function indexAction()
{
$values = Mage::getModel('core/variable')
->setStoreId(1)
->loadByCode('abc');
var_dump($values->getData());
exit;
}
如果您这样做,然后使用单独的工具更新core_variable_value
表格并重新加载页面,您将看到值已更新。
所有这些都指向未缓存的值。