我正在开发一个 Magento 扩展,它向数据库引入了一个新表。每当我发布对表架构进行修改的扩展的新版本时,我发现用户被迫手动单击“系统”>“缓存管理”下的“刷新缓存存储”按钮。
我想让我的扩展在安装后自动清除缓存。我知道如何以编程方式执行与按钮相同的操作,但我不想这样做,因为这会删除整个 Magento 缓存文件夹并对性能产生负面影响。
可能有人知道如何编写代码来清除表架构的缓存,并尽可能具体地执行此操作 - 使不相关的缓存数据不受损害?
更新:我在这里找到了包含表架构缓存的文件:/var/cache/mage-f/mage---d07_DB_PDO_MYSQL_DDL_<table_name>_1d
。现在我如何在代码中定位它? :)
最佳答案
这是我能想到的:
$app = Mage::app();
if ($app != null)
{
$cache = $app->getCache();
if ($cache != null)
{
$cache->clean('matchingTag', array('DB_PDO_MYSQL_DDL'));
}
}
这将仅删除保存有关数据库模式信息的缓存条目和元数据文件。
请注意,它将删除所有表的这些条目。没有简单的方法可以清除特定表的缓存架构并保持其余部分不变。
关于caching - 如何清除 Magento 的数据库架构缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6094101/