Czy istnieje skrypt Drush, aby wyłączyć wszystkie pamięci podręczne?

19

Mam na myśli wszystkie opcje buforowania w obszarze admin / settings / performance. Często używam drush sql-sync, aby aktualizować moją wersję deweloperską na serwerze. Oczywiście serwer musi mieć włączone wszystkie pamięci podręczne.

Zastanawiam się: czy muszę odwiedzać admin / settings / performance przy każdej aktualizacji db? Czy jest do tego skrypt Drush?

Capi Etheriel
źródło
1
krótkie wyjaśnienie: odpowiedź na chx jest najlepsza, ponieważ wystarczy „drush en cache_disable --yes”. GApple jest naprawdę blisko, ponieważ rozwiązuje problem raz na zawsze, choć może zranić początkujących. doublejoice faktycznie proponuje drush scenariusz i jest wspaniałą odpowiedzią na moje pytanie, chociaż pozostałe dwie są jeszcze lepsze.
Capi Etheriel

Odpowiedzi:

6

https://drupal.org/node/797346 dla D7. W przypadku D6 https://drupal.org/project/cache_disable, ale psuje pamięć podręczną formularza. Trzeba go załatać, aby spadł do pamięci podręcznej DB w celu buforowania formularzy. I prawdopodobnie też zaktualizuj pamięć podręczną statusu.


źródło
dam mu spojrzenie i zobaczę, czy mogę to załatać. wielkie dzięki za podpowiedź :)
Capi Etheriel
17

Musisz ustawić kilka zmiennych, aby wyłączyć buforowanie w witrynie deweloperskiej ...

 drush vset cache 0
 drush vset preprocess_css 0
 drush vset preprocess_js 0
 drush vset page_cache_maximum_age 0
 drush vset views_skip_cache TRUE

Jest to jeszcze łatwiejsze, jeśli masz konfigurację warunkową w pliku settings.php. Następnie możesz odświeżyć DB, a zmiany zostaną wprowadzone!

$conf['cache'] = 0; // Page cache $conf['page_cache_maximum_age'] = 0; // External cache TTL $conf['preprocess_css'] = FALSE; // Optimize css $conf['preprocess_js'] = FALSE; // Optimize javascript $conf['views_skip_cache'] = TRUE; // Views caching

... chociaż jeśli po prostu wyłączysz różne buforowanie za pomocą interfejsu administratora i wyczyścisz pamięć podręczną, możesz odłączyć motyw bez wyłączania reszty ... ponieważ skrypt ma mniejszą szansę na zmianę.

doublejosh
źródło
Możesz również wykluczyć plik settings.php z repozytorium, wypychając kod do wersji produkcyjnej i dodać te ustawienia ...$conf = array( 'cache' => FALSE, //page cache 'block_cache' => FALSE, //block cache 'preprocess_css' => FALSE, //optimize css 'preprocess_js' => FALSE, //optimize javascript 'environment' => 'development' );
doublejosh,
Więcej rekomendacji ...$conf['cache'] = 0; $conf['page_cache_maximum_age'] = 0; $conf['block_cache'] = FALSE; $conf['preprocess_css'] = FALSE; $conf['preprocess_js'] = FALSE; $conf['views_skip_cache'] = TRUE;
doublejosh,
11

Możesz użyć pliku settings.php, aby jawnie ustawić zmienne zastępujące ustawienia bazy danych. Wartości zostaną zablokowane na wszystko, co jest ustawione w pliku i nie można go zmienić za pomocą interfejsu administratora.
Na końcu domyślnego pliku znajduje się sekcja, która rozpoczyna się:

/**
 * Variable overrides:
 *
 * To override specific entries in the 'variable' table for this site,
 * set them here. You usually don't need to use this feature. This is
 * useful in a configuration file for a vhost or directory, rather than
 * the default settings.php. Any configuration setting from the 'variable'
 * table can be given a new value. Note that any values you provide in
 * these variable overrides will not be modifiable from the Drupal
 * administration interface.
 *
 * Remove the leading hash signs to enable.
 */
# $conf = array(
#   'site_name' => 'My Drupal site',
#   'theme_default' => 'minnelli',
#   'anonymous' => 'Visitor',

Więc do strony Wyłącz, JS, CSS i buforowania, zestaw cache, preprocess_jsi preprocess_csswszystko'0'

$conf = array(
  'cache' => '0',
  'preprocess_css' => '0',
  'preprocess_js' => '0',
);

Nawias zamykający dla deklaracji tablicowej jest ostatnim wierszem pliku domyślnego, po kilku kolejnych blokach komentarzy, więc pamiętaj o odznaczeniu go, a nie dodaniu nowego. Upewnij się także, że nie masz innej $confdeklaracji, która będzie w konflikcie.

luka
źródło
2

Zawsze możesz użyć pliku aliasów drush na serwerze deweloperskim i ustawić go tak, aby pomijał tabele pamięci podręcznej po uruchomieniu narzędzia sql-sync. Następujące elementy utworzyłyby aliasy dla lokalnego serwera deweloperskiego i zdalnego serwera na żywo:

$aliases['dev'] = array(
    'root' => '/var/www/devroot',
);

$aliases['live'] = array(
    'root' => '/var/www/liveroot',
    'remote-host' => 'www.mysite.com',
    'remote-user' => 'exampleuser',
    'command-specific' => array (
       'sql-sync' => array (
         'skip-tables-list' => 'cache,cache_menu',
       ),
    ),
);

Jeśli zapisałeś to w swoim katalogu domowym pod adresem:

~/.drush/mysite.aliases.drushrc.php

możesz wywołać komendę sql-sync w następujący sposób:

drush sql-sync @mysite.live @mysite.dev

i powinien pomijać tabele pamięci podręcznej (oczywiście wymieniłem tam tylko 2, ale można tam wstawić wszystko, nawet dodaję watchdoga).

Aby uzyskać więcej informacji na temat aliasów i wszystkich różnych opcji, sprawdź plik przykładowy w swojej instalacji drush na stronie drush / Examples / example.aliases.drushrc.php

Ostatnia uwaga dla każdego, kto próbuje użyć synchronizacji sql, miałem problemy z uwierzytelnianiem, kiedy ją uruchomiłem, więc jeśli ktoś spróbuje to zrobić i otrzyma błędy dotyczące kluczy publicznych / prywatnych, wykonaj następujące czynności:

drush dl drush_extras
drush pushkey @mysite.live
drush @mysite.live status

Polecenie pushkey z drush_extras tworzy parę kluczy prywatny / publiczny i przekazuje klucz publiczny do serwera na żywo. Ostatnim poleceniem jest sprawdzenie, czy zadziałało.

Chris Graham
źródło
dzięki, odpowiedź jest cudowna. ale moim problemem jest to, że moje środowisko programistyczne powinno mieć wyłączone pamięci podręczne i chcę unikać odwiedzania administratora / ustawień / wydajności przy każdej aktualizacji.
Capi Etheriel,
1

Napisałem polecenie drush, które włącza / wyłącza wszystkie następujące opcje:

cache
cache_lifetime
page_cache_maximum_age
preprocess_css
preprocess_js

Przykłady i kod można znaleźć tutaj: http://ourlife01.blogspot.gr/2015/05/drush-command-to-enabledisable-cache.html

Aby więc wyłączyć wszystkie powyższe opcje, wystarczy uruchomić:

drush cache-disable

Komenda:

drush cache-enable

to to samo, co ustawienie zmiennych na wartości:

cache: TRUE
cache_lifetime: 1 minute
page_cache_maximum_age: 1 hour
preprocess_css: TRUE
preprocess_js: TRUE
cyberp
źródło
To bardzo miłe, ale ma własne zdanie, jeśli chodzi o ponowne włączenie pamięci podręcznej. Być może lepiej byłoby zapisać poprzednią wartość podczas wyłączania pamięci podręcznej lub po prostu pytając użytkownika za pomocą wiersza polecenia CLI.
Capi Etheriel
Masz rację @barraponto, zmodyfikowałem skrypt i dodałem również pomoc. Nowe polecenie to drush cache-enable min max. Sprawdź powyższy adres URL.
cyberp
Nowa wersja włącza / wyłącza block cacherównież ...
cyberp
niesamowite. co powstrzymuje cię przed opublikowaniem go na drupal.org?
Capi Etheriel
Czas! Nie wiem jak to zrobić :)
cyberp
1

Możesz także wyłączyć pamięć podręczną, umieszczając ją poniżej linii, umieszczając w settings.phpplikach

$conf['display_cache_disable'] = TRUE;
Yusef
źródło