2009-08-04 36 views
19

如何清空緩存的Drupal:我如何清空緩存的Drupal(不傑韋利)

  • 沒有 devel模塊
  • 沒有一個新的節點等運行一些PHP語句
  • 無需進入數據庫本身

實際上,您如何指導最終用戶清除緩存?

+0

爲什麼不能使用你的第二個解決方案? – Sam 2009-08-04 22:48:25

+4

由於某些鏈接仍然指向他們的開發領域。 指示luser進入PHP?必須出錯,通常是以最終的方式! – alexanderpas 2009-08-04 23:00:34

+1

@eyurdakul山姆的評論是非常有建設性的,但你的不是。請不要留下評論告訴人們你正在標記他們的帖子/評論,*只是標記他們*。 – meagar 2016-12-07 23:02:18

回答

43

當您登錄爲管理員(顯然,該網站並不是每個用戶都擁有權力,清除緩存),應該有「轄>站點配置>性能」的頁面。

,並在頁面的底部,應該有一個按鈕(類似「清除緩存數據」),以清除緩存

至於我記得,有沒有必要傑韋利做那你真的不需要去數據庫,也不需要運行一些自制的PHP代碼。


作爲參考,可以看看How to Clear Drupal Server-side cache

+0

謝謝,那正是我尋找的答案。 作爲一個經驗豐富的drupaller我很習慣有權訪問開發模塊,我傾向於忘記最簡單的動作;) – alexanderpas 2009-08-04 22:57:44

+0

不客氣:-)(我承認,我必須考慮一段時間才能記住 - 大量使用Devel也^^ - 而且我最好在發佈之前用google進行檢查,作爲一項安全措施:-D) – 2009-08-04 23:03:07

+0

鏈接現在已損壞,pinging您以便您可以修復它 – 2015-01-22 07:40:20

20

您還可以使用Drush模塊,使您可以使用命令行來執行流行的Drupal的命令,如「drush cron的」或者「快速清除緩存「。

+6

確實!轉到命令行並鍵入'drush cc all':)更簡單:) – AntonioCS 2010-10-04 14:28:56

+0

+1迄今爲止的最佳答案 – mate64 2012-05-30 10:27:35

4

我有最簡單的解決方案。安裝admin_menu模塊(實際上不僅是爲了這個目的,一旦你安裝了這個模塊,你肯定不會後悔,鏈接:http://drupal.org/project/admin_menu)。好的,然後在新出現的頂部下拉菜單中懸停你的圖標和下拉菜單將出現,你會看到:刷新所有緩存菜單。一次點擊 - 一次沖洗。此外,您可以刷新所有緩存在一起,或選擇什麼衝:頁面,菜單,主題等嘗試,你將永遠不會回去)

+0

管理菜單臃腫,可以爲登錄的用戶創建性能問題。它在當天還有問題幾乎每個頁面都會調用menu_router_build。 – Kevin 2010-03-28 17:54:16

3

這將是真棒,如果你可以只通過點擊獲取行爲:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
但你不能。
不過,我要指出的短切,通過管理菜單中的URL(使用後篇):
http://drupal.local. /admin/settings/performance

1

點播結算可以在轄>站點配置>性能來完成。

您應該將cron作業設置爲每小時運行一次(或任何您喜歡的時間間隔)。

當在Drupal上運行cron時,所有緩存都將被清除並重建,而無需人工手動執行。

如果此問題與主題相關,則應禁用緩存機制(css/js聚合),並且在進行更改時不必清除緩存數據。

0

在這裏你去:

我不得不去安裝「devel的」模塊(它是用特殊的菜單項,這是我需要更差不兼容),所以我做了我自己。

無論你看到MODULENAME,都會將其替換爲模塊的名稱。

STEP 1: 添加到在HOOK_MENU任何模塊(最好的自定義模塊中的一個),之後將 「返回$項目」 行:

// 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, 
); 

STEP 2: 現在,同一模塊中文件,它不是「內部」的其他功能,添加:現在

/** Page callback **/ 
function MODULENAME_flush_cache() { 
    drupal_flush_all_caches(); 
    return 'Caches were flushed.'; 
} 

,你可以去到URL「/刷新緩存」您的網站上刷新緩存。 (您刷新後緩存最後一次舊的方式。)

第3步: 如果你想它真的很方便,以下內容添加到您的page.tpl.php中的文件。你可以把它放在<機身>和< /機身>之間的任何地方。注意:$ 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; ?> 

And voila!您可以點擊每個頁面的右上角有一個「同步」鏈接。隨意更改「右」和「上」量(或將「右」改爲「左」或「上」到「下」以將其放在任何你喜歡的位置。只適合你,所以它不應該是一個問題,對嗎?

0

以下模塊創建一個菜單項,只有擁有「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.'; 
} 
6

如果要清除一個模塊的緩存,可以使用下面的代碼。

drupal_flush_all_caches(); 
1

我發現下面的例子:http://www.drupalgardens.com/content/clear-all-caches-not-working

這裏面有「清除所有 緩存」不影響,你說得對現場周圍緩存的另一層。這是爲匿名用戶存儲 內容的圖層。

如果您想繞過緩存進行測試,可以將 垃圾查詢字符串添加到站點路徑的末尾。例如,如果 想要繞過example.drupalgardens.com/foo上的緩存,您可以訪問example.drupalgardens.com/foo?bar=baz或任何其他隨機文本 設置爲「xxxxx = xxxxx」,即 。

這對我有幫助,因爲在Configuration> Performance下清除緩存似乎沒有幫助。

+0

這很有用(所以我把它提升回零),但它並沒有真正回答這個問題,這可能是爲什麼它被低估了。您可能希望在別人低估之前將其刪除。 – iconoclast 2013-11-06 17:55:32

1

上述代碼適用於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

:你然後將其沖洗確保您在權限頁面上授予他們權限。如果在打開模塊後沒有出現權限,請按照「正常」方式清除緩存。

當你不希望你的客戶端訪問管理菜單,但你仍然希望他們能夠刷新緩存時,這是可取的。

0

在Drupal 8中,管理菜單模塊尚未準備好使用。它可能會被Drupal的「工具欄」取代。所以,現在有沒有簡單的方法來清除緩存,實際上並沒有打算:

admin/config/development/performance 

唯一的選擇是對現有的工具欄上添加菜單項。這可以通過使用this module來完成,但正如你所看到的,它仍然需要一些工作。我得到了它的工作,但不得不做一些調整。

-1

使用drush和該命令:drush cc的所有

如果您使用加速緩存,你需要更具體:

drush @alias_name cc all 
+0

您不能指示最終用戶清除cachenwitha命令行,因爲他們通常只能訪問用戶界面(後臺)。 – 2016-01-10 07:53:35