Czy mogę wyłączyć pamięć podręczną dla wdrożenia programistycznego?

22

Na platformie programistycznej buforowanie może być uciążliwe. Czy mogę to wyłączyć? Czy wpłynie to na którykolwiek z modułów, które tego wymagają?

palbakulich
źródło

Odpowiedzi:

19

Zainstaluj moduł devel, który dodaje opcję czyszczenia pamięci podręcznej dla administratorów. Znajdziesz blok programistyczny, który możesz dodać do regionu w celu szybkiego wyczyszczenia pamięci podręcznej lub jeśli zainstalujesz menu administratora i zobaczysz szybkie menu w lewym górnym rogu do czyszczenia różnych pamięci podręcznych w Drupal.

Jeśli podoba Ci się wiersz poleceń, zainstaluj drush i użyj drush cc allpolecenia, aby wyczyścić pamięć podręczną witryn. Uważaj, że obecnie Drush cc nie wyczyści pamięci podręcznej Varnish, jeśli dotyczy to twojej konfiguracji.

budda
źródło
9

Jeśli korzystasz z Drupal 7, zawsze możesz ustawić buforowanie na używanie DrupalFakeCache, które zwykle używane jest tylko podczas procesu instalacji. Aby to ustawić, upuść następujący fragment kodu w pliku settings.php:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Mikey P.
źródło
4

Strona „Wydajność” w administracji> konfiguracja strony pozwoli ci włączyć / wyłączyć buforowanie wybranych elementów strony. Szablony motywów są zwykle buforowane bardziej trwale, ale można je opróżniać na tej samej stronie „wydajności”.

Moduł „Menu administracyjne” zapewni skrót na pasku narzędzi, jeśli opróżnianie pamięci podręcznej musi być wykonywane częściej - podczas tworzenia motywów ciągle się opróżniam.

Storsey
źródło
4

O ile mi wiadomo, nie ma żadnych modułów wymagających buforowania. Jeśli nie chcesz go wyłączać, możesz wyczyścić go w Site Settings > Performancesekcji.

Nawet przy wyłączonym buforowaniu Drupal nie rozpozna nowych plików dodanych do motywów, dopóki nie wyczyścisz pamięci podręcznej.

Istnieje kilka informacji na temat różnych sposobów wyczyszczenia pamięci podręcznej na Drupal.org

Paul Jones
źródło
4

Oprócz wymienionych przez Steve'a metod , użycie modułu Devel otwiera jeszcze kilka opcji, w tym:

  • Odbudowywanie pamięci podręcznej kompozycji przy każdym ładowaniu strony (przydatne, jeśli pracujesz nad plikami szablonów)
  • Blok, który zapewni łatwy dostęp do funkcji pustej pamięci podręcznej i funkcji ponownej instalacji.

Gdy moduł Devel i buforowanie są wyłączone w obszarze Wydajność , jedyną dużą pamięcią podręczną, na którą napotkasz podczas rutynowego programowania, jest router menu, który można odbudować za pomocą Devel lub menu administratora, jak wspomniał Steve.

Społeczność
źródło
4

Jedną ważną rzeczą do zapamiętania jest to, że jeśli masz wiele arkuszy stylów (z motywu lub z modułów), to wyłączenie optymalizacji plików CSS może uszkodzić twoją witrynę w IE.

Chociaż tak naprawdę nie buforuje, znajduje się na tej samej stronie ustawień i jest często używany z buforowaniem.

Nawiasem mówiąc, link „Opróżnij wszystkie pamięci podręczne” w module menu administratora jest fantastyczny.

epersonae
źródło
Jeśli martwisz się o IE, możesz użyć drupal.org/project/ie_css_optimizer
realityloop
3

Jeśli używasz Drupala 6, moduł „ Wyłącz pamięć podręczną ” może być przydatny do tego zadania, jeśli nie chcesz [z jakiegoś powodu] instalować cięższych modułów, takich jak Devel.

dzikie piki
źródło
2

Stare pytanie, ale właśnie zobaczyłem, że pojawiło się jako powiązane z wyszukiwaniem, które przeprowadzałem.

Prawie wszystkie metody czyszczenia pamięci podręcznej kończą na końcu wywoływanie drupal_flush_all_caches . Możesz bawić się, wywołując to w różnych okolicznościach we własnym kodzie.

mpdonadio
źródło
2

Ilość skrzynek używanych z Drupalem czasami może zwariować.

Oto typowe metody wyłączania i czyszczenia pamięci podręcznych Drupal i związane z nimi.


WYŁĄCZANIE PAMIĘCI:

Pamiętaj, że nie możesz wyłączyć wszystkich pamięci podręcznych, ponieważ niektóre z nich są wymagane przez Drupala.

Oto metoda wyłączenia pamięci podręcznej przez dodanie następujących wierszy do pliku ustawień:

// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;

Jeśli wyłączysz wszystkie swoje pamięci podręczne, twoja strona będzie działała bardzo wolno, więc nie jest to zalecane w żadnym innym środowisku wyłączającym twoją maszynę programistyczną.


CZYSZCZENIE DANYCH

XCache

Wyczyść pamięć podręczną XCache, jeśli jest używana:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

Lub wyczyść pamięć podręczną w XCache w panelu administracyjnym (/ xcache-admin), jeśli powyżej nie będzie działać.

eAccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Wyczyść PHP OPCache, jeśli używasz z PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Uwaga: powyższe polecenie CLI nie wyczyści pamięci podręcznej dla Apache, zgodnie z: Opcache - Wyczyść pamięć podręczną w PHP5.4 i starszych wersjach .

memcached

Jeśli używasz memcached, powinieneś wyczyścić, zrestartować lub zabić memcached jedną z metod:

Jako użytkownik (jeden z tych):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

Jako root (jeden z tych):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

Zaleca się również zainstalowanie modułu memcached z następującym wierszem w pliku ustawień:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Tak więc pamięci podręczne Memcached są czyszczone na standardowej pamięci podręcznej Drupal.

Lakier

Jeśli używasz Varnish, zalecamy zainstalowanie modułu Varnish i ustawienie następującej linii w pliku ustawień:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Tak więc pamięć podręczna lakieru zostanie wyczyszczona razem na czystej pamięci podręcznej Drupala.

Alternatywnie możesz użyć curl do ręcznego czyszczenia stron:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

Czytaj więcej: Jak mogę wyczyścić pamięć podręczną Varnish?

Drupal

Wyczyść pamięć podręczną Drupal poprzez drush:

drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'

Możesz zrobić to samo w / admin / config / development / performance, ponieważ czasami pamięci podręczne interfejsu użytkownika są czyszczone w lepszy sposób niż z interfejsu CLI.


Oto przydatny skrypt powłoki do czyszczenia wszystkich pamięci podręcznych:

#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.
kenorb
źródło
3
OPCache nie będzie działał z poziomu CLI, na przykład patrz objaśnienie: stackoverflow.com/questions/17716639/...
LarS
0

możemy użyć jednej z następujących metod, aby wyczyścić pamięć podręczną w Drupal

1.) Możemy po prostu odwiedzić adres URL twoja_domena / admin / config / development / performance i kliknąć przycisk wyczyść pamięć podręczną.

2.) Jeśli mamy zainstalowany moduł drush, możemy wyczyścić pamięć podręczną za pomocą tego polecenia drush cc all .

3.) Jeśli mamy dostęp do bazy danych, możemy wyczyścić pamięć podręczną za pomocą następujących poleceń (bezpośredni dostęp do produkcyjnej bazy danych nie jest zdecydowanie zalecany; zamiast tego użyj jednej z alternatyw, jeśli Twoja witryna jest „aktywna”)

Pamięć podręczna TABELI ŚCIENNEJ;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; // zauważ ważne różnice w stosunku do innych tabel cache_ * - zobacz więcej informacji poniżej

TRUNCATE TABLE cache_image;

TRUNCATE TABLE cache_menu;

TRUNCATE TABLE cache_page;

TRUNCATE TABLE cache_path;

TRUNCATE TABLE cache_token;

TRUNCATE TABLE cache_update;

4.) Możemy również napisać zapytanie w naszym pliku modułu db_query („DELETE FROM {cache};”);

5.) Możemy użyć interfejsu API drupal do czyszczenia pamięci podręcznej, jak cache_clear_all ()

6.) Możemy również wyczyścić pamięć podręczną, instalując moduł deweloperski i włączając moduł deweloperski / programistyczny. W ten sposób możemy wyczyścić pamięć podręczną

Więcej informacji na temat cache_form, który ma inny cel niż inne tabele cache_ :

  • podstawowe dokumenty API dla drupal_flush_all_caches () mówią: „Nie usuwaj cache_form - przesyłane formularze w toku mogą się zepsuć”. Dotyczy to tylko witryn z aktywnymi użytkownikami, a nie wersji rozwojowych.

  • inne ręczne metody czyszczenia pamięci podręcznej opisane w tym poście nie wpłyną na cache_form

  • jeśli chcesz zmniejszyć rozmiar cache_form w witrynie produkcyjnej, zobacz Rozmiar tabeli Cache Form jest ogromny

SynapseIndia
źródło