Jak całkowicie wyłączyć buforowanie?


26

Tworzę witrynę w Drupal 7 i buforowanie znacznie spowalnia moją pracę. Na przykład miałem funkcję tematyczną dla formularza. Byłem zaskoczony, dlaczego to nie działa. Aż wyczyściłem pamięć podręczną i została ona naprawiona.

Jak całkowicie to wyłączyć?

Odpowiedzi:


21

Funkcje motywu są obsługiwane przez rejestr motywów: przebudowywanie (lub, co gorsza, wyłączanie) wszystkich pamięci podręcznych witryny w celu wybrania nowej funkcji motywu jest niepotrzebne i nadmierne.

Możesz użyć modułu Devel do przebudowania rejestru motywu przy każdym przeładowaniu strony. Po zainstalowaniu przejdź do Konfiguracja → Programowanie → Ustawienia rozwoju. Tam zaznacz „Odbuduj rejestr motywów przy każdym ładowaniu strony” i naciśnij przycisk „Zapisz konfigurację”. Pamiętaj, aby odznaczyć (lub jeszcze lepiej, całkowicie wyłączyć Devel) po zakończeniu programowania.


jest to jednak tylko rejestr motywów.
Andrew Welch,

2
Pytanie brzmi: „Jak całkowicie to wyłączyć?” to tylko jedna jego część
SeanJA

29

Możesz zamienić domyślny backend bufora na taki, który tak naprawdę nic nie robi. Po prostu dodaj to do pliku settings.php:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Dla pewności ustaw czas wygaśnięcia pamięci podręcznej na none na stronie Performance.

Właściwie używam tego w pliku settings.local.php, który, jeśli istnieje, zostaje dołączony do dolnej części mojego pliku settings.php, dzięki czemu mogę zsynchronizować settings.php ze środowiskiem live lub staging z moim środowiskiem programistycznym bez obaw na temat używania niewłaściwych ustawień bazy danych, przypadkowego wypchnięcia ustawień programisty do życia itp.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

4
Możesz użyć tej samej sztuczki, aby wyłączyć buforowanie na pojemnik. Na przykład. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong,

4
To powinna być zaakceptowana odpowiedź, ponieważ zaakceptowana opisuje tylko, jak wyłączyć pamięć podręczną rejestru motywów, a nie wszystkie pamięci podręczne
mastazi

10

Nie można skręcić z wszystkich buforowanie całkowicie. A jeśli rzeczywiście zrobił, byłoby to spowolnić postęp więc znacznie więcej. Zastanów się, ile czasu zajmuje w rzeczywistości wyczyszczenie pamięci podręcznej, tak wyglądałoby każde ładowanie każdej strony.

Jest tak wiele przechwytywania informacji o dostępnych obiektach, polach, formularzach, zaimplementowanych przechwytywaniach itp., Które trzeba wykonać tylko raz, więc nie chcesz temu zapobiec.

Kiedy przyzwyczaisz się do Drupala, wkrótce dowiesz się, jakie rzeczy wymagają wyczyszczenia pamięci podręcznej, i prawdopodobnie zaprzyjaźnisz się ze skrótem menu administratora lub drush cc all, i to już nie będzie problem.


Zgadzam się, gdy zdasz sobie sprawę, że większość nowych haczyków wymaga wyczyszczenia pamięci podręcznej, zanim zostanie rozpoznana płynność żeglowania odtąd! :)
Alex Weber

2
Szczerze mówiąc po kilku miesiącach rozwoju Drupala nadal uważam, że to problem. Uważam, że chociaż lokalna szybkość nie jest ważna, nie ma wielu użytkowników wysyłających równoległe żądania. W większości innych frameworków (Django, Symfony itp.) Wyłączanie pamięci podręcznej podczas programowania lokalnego jest łatwo dostępną opcją, nie rozumiem, dlaczego nie mogę mieć jej również w Drupal. Każdego dnia mam co najmniej jeden przypadek, w którym coś nie działa, a powodem jest to, że zapomniałem wyczyścić pamięć podręczną, zdarza się to bardzo często i naprawdę mi to przeszkadza.
mastazi

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.