Drupalキャッシュを空にする方法:
効果的に、エンドユーザーにキャッシュをクリアするように指示するにはどうすればよいですか。
管理者としてログインしている場合(明らかに、サイトのすべてのユーザーがキャッシュをクリアするために電源を投入する必要があるわけではありません)、「 管理>サイト構成>パフォーマンス "。
そして、ページの下部に、キャッシュをクリアするためのボタン( "Clear cached data"など)があるはずです。
私が覚えている限り、Develがそれを行う必要はなく、データベースにアクセスする必要も、自家製のPHPコードを実行する必要もありません。
参考として、あなたは How to Clear Drupal Server-side cache を見ることができます
Drush モジュールを使用することもできます。これにより、コマンドラインを使用して、「drush cron」や「drush cache clear」などの一般的なDrupalコマンドを実行できます。
モジュールからキャッシュをクリアしたい場合は、次のコードを使用できます。
drupal_flush_all_caches();
私はそのための最も簡単な解決策を持っています。 admin_menuモジュールをインストールします(実際にこの目的だけでなく、このモジュールをインストールしたら、後悔することはありません。リンク: http://drupal.org/project/admin_men )。それでは、新しく表示された上部のドロップダウンメニューにファビコンをホバーするとドロップダウンメニューが表示され、次のように表示されます。すべてのキャッシュメニューをフラッシュします。ワンクリック-ワンフラッシュ。さらに、すべてのキャッシュを一緒にフラッシュするか、何をフラッシュするかを選択できます:ページ、メニュー、テーマなど。
あなたが打つことによって単に振る舞いを得ることができればそれは素晴らしいでしょう:http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
しかしできません。
ただし、管理メニューからショートカット用のURLを書き留めておきます(後の部分を使用):http://drupal.local. /admin/settings/performance
オンデマンドクリアは、[管理]> [サイトの構成]> [パフォーマンス]で実行できます。
Cronジョブを設定して、毎時間(またはお好みの間隔で)実行するようにしてください。
Drupalでcronを実行すると、すべてのキャッシュがクリアされて再構築されるため、人間が手動で実行する必要はありません。
この質問がテーマに関連している場合は、キャッシュメカニズム(css/js集約)を無効にする必要があります。変更を行うときにキャッシュデータをクリアする必要はありません。
どうぞ:
私は「devel」モジュールを削除する必要があったので(これは特別なメニュー項目と互換性がなく、さらに必要でした)、自分で作成しました。
MODULENAMEが表示されているところはどこでも、それをモジュールの名前に置き換えます。
ステップ1:HOOK_MENUの「return $ items」行の前の任意のモジュール(できればカスタムモジュールの1つ)に追加します。
// short cut for flushing the caches:
$items['flush-cache'] = array(
'type' => MENU_CALLBACK,
'title' => t('Flush the cache'),
'description' => 'MODULENAME Custom Cache Flush',
'page callback' => 'MODULENAME_flush_cache',
'access callback' => TRUE,
);
ステップ2:次に、他の関数の「内部」にない同じモジュールファイルに、次の行を追加します。
/** Page callback **/
function MODULENAME_flush_cache() {
drupal_flush_all_caches();
return 'Caches were flushed.';
}
これで、サイトのURL "/ flush-cache"にアクセスして、キャッシュをフラッシュできます。 (最後にもう一度古い方法でキャッシュをフラッシュした後。)
ステップ3:本当に便利にしたい場合は、以下をpage.tpl.phpファイルに追加します。 <body>と</ body>の間のほぼどこにでも置くことができます。注:$ my_is_testは私が使用する変数で、テストシステムではTRUE、本番環境ではFALSEです。そのようなものがない場合は、TRUEまたはFALSEに置き換えて、オンまたはオフにします。
<?php if ($my_is_test): ?>
<a style="text-align:left; position:absolute; right:2px; top:20px;" href="<?=$base_path?>flush-cache" onclick="this.innerHTML = '<b><blink><big>Wait...</big></blink></b>';">flush</a>
<? endif; ?>
そして出来上がり!クリックできるすべてのページの右上隅に「フラッシュ」リンクがあります。 「右」と「上」の量を自由に変更してください(または「右」を「左」または「上」から「下」に変更して、好きな場所に配置してください。このリンクの配置は、最新のブラウザでのみ機能しますが、あなただけのため、それで問題ないはずですよね?
私は以下を見つけました: http://www.drupalgardens.com/content/clear-all-caches-not-working
「すべてのキャッシュをクリア」が影響しないサイトの周りに別のキャッシュ層があります、そうです。これは、匿名ユーザーのコンテンツを格納するレイヤーです。
テスト目的でキャッシュをバイパスする場合は、ジャンククエリ文字列をサイトパスの最後に追加できます。たとえば、example.drupalgardens.com/fooのキャッシュをバイパスする場合は、example.drupalgardens.com/foo?bar = bazまたは?xxxxx = xxxxxのように設定されたその他のランダムテキストにアクセスできます。
これは私を助けました、私はConfiguration> Performanceの下でキャッシュをクリアすることが役に立たないように見える問題を抱えていたからです。
上記のコードはDrupal 6.用です。
Drupal 7の場合、フラッシュキャッシュモジュールは次のようになります。
<?php
/**
* Implementation of hook_menu()
*/
function flush_cache_menu() {
$items = array();
$items['flush-cache'] = array(
'type' => MENU_NORMAL_ITEM,
'title' => t('Flush the cache'),
'description' => 'Flush all website caches to make sure it updates to relect '.
'your recent changes.',
'page callback' => 'flush_cache_custom_callback',
'access callback' => user_access('flush cache'),
);
return $items;
}
/**
* Implementation of hook_permission()
*/
function flush_cache_permission() {
return array(
'administer my module' => array(
'title' => t('flush cache module'),
'description' => t('Content admin flush cache.'),
),
);
}
/**
* Function that flushes the cache
*/
function flush_cache_custom_callback() {
drupal_flush_all_caches();
return 'Caches were flushed.';
}
注:次のようにしてフラッシュします。
sitename.com/flush-cache
必ず許可ページで許可を与えてください。モジュールをオンにしても権限が表示されない場合は、「通常の」方法でキャッシュを一度クリアしてください。
これは、クライアントに管理メニューへのアクセスを許可したくないが、キャッシュをフラッシュできるようにしたい場合に適しています。
次のモジュールは、「キャッシュのフラッシュ」権限を持つユーザーのみがアクセスできるメニュー項目を作成します。このモジュールは、通常のユーザー権限ページで利用できます。
/**
* Implementation of hook_menu()
*/
function flush_cache_menu() {
$items = array();
$items['flush-cache'] = array(
'type' => MENU_NORMAL_ITEM,
'title' => t('Flush the cache'),
'description' => 'Flush all website caches to make sure it updates to relect '.
'your recent changes.',
'page callback' => 'flush_cache_custom_callback',
'access callback' => user_access('flush cache'),
);
return $items;
}
/**
* Implementation of hook_perm()
*/
function flush_cache_perm() {
return array('flush cache');
}
/**
* Function that flushes the cache
*/
function flush_cache_custom_callback() {
drupal_flush_all_caches();
return 'Caches were flushed.';
}
Drupal 8の場合、管理メニューモジュールはまだ使用する準備が整っていません。おそらくDrupal "Toolbar"に置き換えられます。今すぐ実際に行かずにキャッシュをクリアする簡単な方法はありません。
admin/config/development/performance
唯一の選択肢は、既存のツールバーにメニュー項目を追加することです。これは this module を使用して実行できますが、ご覧のとおり、まだ少し作業が必要です。私はそれを機能させましたが、いくつかの微調整を行う必要がありました。