Drupal キャッシュを空にする方法:
- Devel モジュールなし
- 新しいノードなどでPHPステートメントを実行せずに。
- データベース自体に入ることなく
事実上、エンドユーザーにキャッシュをクリアするようにどのように指示しますか?
Drupal キャッシュを空にする方法:
事実上、エンドユーザーにキャッシュをクリアするようにどのように指示しますか?
管理者としてログインしている場合(明らかに、サイトのすべてのユーザーがキャッシュをクリアする必要があるわけではありません) 、 [管理] > [サイトの構成] > [パフォーマンス]にページが表示されます。
そして、ページの下部に、キャッシュをクリアするためのボタン (「キャッシュされたデータをクリアする」のようなもの) があるはずです。
私が覚えている限りでは、Devel がそれを行う必要はなく、データベースにアクセスする必要も、自家製の PHP コードを実行する必要もありません。
Drushモジュールを使用することもできます。これにより、コマンドラインを使用して、「drushcron」や「drushcacheclear」などの一般的なDrupalコマンドを実行できます。
モジュールからキャッシュをクリアする場合は、次のコードを使用できます。
drupal_flush_all_caches();
そのための最も簡単な解決策があります。admin_menu モジュールをインストールします (実際には、この目的のためだけではありません。このモジュールをインストールしたら、後悔することはありません。リンク: http://drupal.org/project/admin_menu )。OK、次に、新しく表示された上部のドロップダウン メニューでファビコンにカーソルを合わせると、ドロップダウン メニューが表示され、次のように表示されます。ワンクリック - ワンフラッシュ。さらに、すべてのキャッシュを一緒にフラッシュしたり、フラッシュするものを選択したりできます: ページ、メニュー、テーマなど。
ヒットするだけで動作を取得できれば最高ですが
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
、それはできません。
ただし、管理メニューを介したショートカットの URL をメモしておきたいと思います (後者の部分を使用してください)。
http://drupal.local. /admin/settings/performance
どうぞ:
「devel」モジュールをアンインストールする必要がありました (これは特別なメニュー項目と互換性がなく、もっと悪い必要がありました)、自分で作成しました。
MODULENAME が表示されている場所はどこでも、モジュールの名前に置き換えます。
ステップ 1: "return $items" 行の前に、HOOK_MENU 内の任意のモジュール (できればカスタム モジュールの 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; ?>
そして出来上がり!クリックできるすべてのページの右上隅に「フラッシュ」リンクがあります。「右」と「上」の量を自由に変更してください (または、「右」を「左」または「上」を「下」に変更して、好きな場所に配置してください。このリンクの配置は最新のブラウザーでのみ機能しますが、あなただけだから問題ないでしょ?
オンデマンド クリアは、[管理] > [サイトの構成] > [パフォーマンス] で実行できます。
毎時間 (または任意の間隔で) 実行するように cron ジョブを設定する必要があります。
Drupal で cron を実行すると、人間が手動で行う必要なく、すべてのキャッシュがクリアされて再構築されます。
この質問がテーマに関するものである場合は、キャッシュ メカニズム (css/js アグリゲーション) を無効にする必要があります。これにより、変更を行ったときにキャッシュ データをクリアする必要がなくなります。
次の場所を見つけました: http://www.drupalgardens.com/content/clear-all-caches-not-working
サイトの周りには、「すべてのキャッシュをクリア」しても影響を受けないキャッシュの別のレイヤーがあります。これは、匿名ユーザーのコンテンツを格納するレイヤーです。
テスト目的でキャッシュをバイパスする場合は、サイト パスの末尾にジャンク クエリ文字列を追加できます。たとえば、example.drupalgardens.com/foo のキャッシュをバイパスしたい場合は、example.drupalgardens.com/foo?bar=baz にアクセスするか、?xxxxx=xxxxx のように設定されたその他のランダム テキストにアクセスできます。
[構成] > [パフォーマンス] でキャッシュをクリアしても効果がないように見えるという問題があったため、これは役に立ちました。
次のモジュールは、「フラッシュ キャッシュ」権限を持つユーザーのみがアクセスできるメニュー項目を作成します。このモジュールは、通常のユーザー権限ページで使用できるようにします。
/**
* 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 の「ツールバー」に置き換わるでしょう。そのため、実際に次のことを行わずにキャッシュをクリアする簡単な方法はありません。
admin/config/development/performance
唯一の代替手段は、既存のツールバーにメニュー項目を追加することです。これは、このモジュールを使用して実行できますが、ご覧のとおり、まだ少し作業が必要です。私はそれを機能させましたが、いくつかの微調整を行う必要がありました。
drush と次のコマンドを使用します: drush cc all
Boost を使用してキャッシュしている場合は、より具体的にする必要があります。
drush @alias_name cc all