16

有一种方法可以从System->Cache Management菜单中禁用缓存。

如何使用数据库 SQL 查询在不进入站点的情况下执行相同操作?

4

5 回答 5

32

禁用缓存的最简单方法是使用 SQL 查询:

UPDATE `core_cache_option` SET value=0;

并清除您的缓存文件夹以确保:

rm -rf <YOUR SITE PATH HERE>/magento/var/cache/*

在 Magento 企业版中,您还必须清除 full_page_cache 目录(感谢 Bartosz Górski):

rm -rf [YOUR SITE PATH HERE]/magento/var/full_page_cache/*
于 2013-09-02T14:42:26.330 回答
6

如果您不想登录网站,只需使用以下脚本即可

<?php

$mageFilename = 'app/Mage.php';

require_once $mageFilename;

umask(0);
Mage::app('admin');

Mage::app()->cleanAllSessions();
Mage::app()->getCacheInstance()->flush();
Mage::app()->cleanCache();

$types = Array(
          0 => 'config', 
          1 => 'layout',
          2 => 'block_html', 
          3 => 'translate', 
          4 => 'collections',
          5 => 'eav',
          6 => 'config_api',
          7 => 'fullpage',
          8=>'config_api2'
        );

 $allTypes = Mage::app()->useCache();

$updatedTypes = 0;
foreach ($types as $code) {

    if (!empty($allTypes[$code])) {

        $allTypes[$code] = 0;
        $updatedTypes++;

    }
    $tags = Mage::app()->getCacheInstance()->cleanType($code);
}
if ($updatedTypes > 0) {
    Mage::app()->saveUseCache($allTypes);
    echo "Caches disabled Programmatically";
}
else {
    echo "Caches disabled Already";
}

只需创建您自己的脚本,您就可以使用缓存部分完成

希望这对你有帮助。

于 2013-08-31T05:23:55.357 回答
4

这是一个简单的代码片段,可在设置脚本中用于启用或禁用单个缓存类型:

$cacheOptions = Mage::app()->useCache();

// disable full page cache:
$cacheOptions['full_page'] = 0;

// enable block cache:
$cacheOptions['block_html'] = 1;

Mage::app()->saveUseCache($cacheOptions);

您可以在core_cache_option数据库表中查找缓存类型:

mysql> select * from core_cache_option;
+-------------+-------+
| code        | value |
+-------------+-------+
| block_html  |     1 |
| collections |     1 |
| config      |     1 |
| config_api  |     1 |
| config_api2 |     1 |
| eav         |     1 |
| full_page   |     0 |
| layout      |     1 |
| translate   |     1 |
+-------------+-------+
9 rows in set (0.00 sec)
于 2015-09-10T13:17:42.643 回答
1

我创建了一个 Shell 脚本来启用、禁用和/或清理 magento 缓存。它从 etc/local.xml 中读取必要的参数(DBHost 等)...

你可以从我的 github gist 下载它: https ://gist.github.com/seangreen/d9557726b479e066d71f

实际的mysql查询是这样的:

禁用缓存: mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_cache_option SET value=0;" $DBNAME

启用缓存: mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_cache_option SET value=1;" $DBNAME

在禁用或启用后清理缓存很好: rm -rf var/cache/*

于 2015-06-10T10:10:18.993 回答
0

如果您仍然使用默认的糟糕文件系统缓存(AKA Architectural facepalm hider),您会注意到缓存中有一个名为:mage---687_CORE_CACHE_OPTIONS 的文件和一个名为:mage---internal-metadatas---687_CORE_CACHE_OPTIONS 的文件。如果您坚持默认设置,它在法师--4 之下。

因此,如果您只需要删除其中的 2 个,则无需刷新整个站点。最好的做法当然是让 Magento 删除它们,因为您也可以拥有 XCache 或为专业人士提供一个完整的机架空间,其中充满了 no-sql-db。

Mage::app()->cleanCache(array(' MAGE '));

使用:Mage::app()->saveUseCache($cacheSettings); 它不需要它会自动删除它。

因此,“rm -rf var/cache/”仅适用于 NOOB 系统。并且可以使 Magento 系统崩溃,但几率非常低。为此,您需要大量流量,并且可以使用默认的文件系统缓存系统来获得流量。

于 2015-09-07T13:01:06.353 回答