Chciałbym wiedzieć, czy istnieje jakaś preferowana procedura dla następujących czynności:
- Opróżnianie pamięci podręcznej Magento
- Włączanie / wyłączanie kompilatora Magento
1. Opróżnianie pamięci podręcznej Magento
Jest tu kilka opcji, a mianowicie:
- Sprawdzanie elementów zamówienia i przesyłanie odświeżenia z
Actions
menu rozwijanego - Kliknięcie
Flush Magento Cache
przycisku i - Kliknięcie
Flush Storage Cache
przycisku
Czy istnieje jakaś preferowana kolejność ich wykonywania? Jaka jest różnica między pamięcią podręczną Magento a pamięcią podręczną?
2. Włączanie / wyłączanie kompilatora Magento
a) Włączanie kompilatora
Jeśli chodzi o włączenie kompilatora Magento, czy należy włączyć wszystkie pamięci podręczne sklepów? A może buforowanie należy aktywować dopiero po włączeniu kompilatora i uruchomieniu procesu kompilacji? Po włączeniu kompilatora należy odświeżyć wszystkie pamięci podręczne? A jeśli tak, to czy obejmuje to opróżnianie pamięci podręcznej i pamięci podręcznej Magento (jak wspomniano powyżej)
b) Wyłączanie kompilatora
Jeśli chodzi o wyłączenie kompilatora Magento, należy najpierw wyłączyć wszystkie pamięci podręczne, a następnie włączyć je ponownie po wyłączeniu?
Czy jest jakaś różnica między pozostawieniem włączonych pamięci podręcznych a wyłączeniem / włączeniem kompilatora? Jaki to ma wpływ na wydajność?
Wszelkie uwagi będą mile widziane
Odpowiedzi:
Opróżnij pamięć podręczną Magento - Czyści pamięć podręczną (var / cache) wszystkich elementów, które Magento wie, że utworzyła.
Opróżnij pamięć podręczną - czyści wszystko w var / cache, niezależnie od tego, jak te pliki zostały utworzone.
Jeśli więc chcesz być bezpieczny, czyścisz wszystko, możesz wybrać opcję „ Opróżnij pamięć podręczną ”, która zasadniczo wyczyści pamięć var / cache.
W przypadku kompilatora zalecam opróżnienie pamięci podręcznej Magento po włączeniu kompilacji i uruchomieniu procesu kompilacji. Zapewnia to wyczyszczenie pamięci podręcznej z wszelkich nieskompilowanych danych.
Podczas wyłączania kompilacji najpierw ją wyłączam, a następnie opróżniam pamięć podręczną Magento. To ponownie zapewnia, że pamięć podręczna nie zawiera żadnych skompilowanych danych.
O ile nie testujesz dużo rzeczy, zawsze zalecałbym pozostawienie pamięci podręcznej włączonej. Kompilację można przeoczyć lub przeoczyć pod względem wydajności. Widziałem, jak to przyspiesza, i wiele razy widziałem, że kompilacja spowalnia pracę i powoduje problemy z rozszerzeniami innych firm. Polecam uzyskanie linii bazowej dla czasu ładowania strony kategorii (przy użyciu Firebug / narzędzi programistycznych) przy wyłączonej kompilacji, a następnie ponownie przy włączonej kompilacji i sprawdzanie, czy istnieje duża różnica.
Lepiej byłoby użyć takich rzeczy, jak pamięć podręczna opcode w PHP, właściwe buforowanie zapytań MySQL, łączenie plików css / js, kompresja gzip, rozszerzenie Full Page Cache i odpowiednie ustawienia buforowania plików przez przeglądarkę.
źródło
Pamięć podręczna Magento nie jest inna. Zaczynając od podstaw, opcje pamięci podręcznej można przeglądać, przechodząc do
w backend. Możesz zobaczyć różne obszary buforowania, które można włączyć / wyłączyć, takie jak dowolne konfiguracje, layout.xml, bloki, pełne strony i pliki API. Oczywiście idealnym rozwiązaniem jest włączenie wszystkich tych funkcji po uruchomieniu witryny.
Pamięć podręczną można również wyczyścić lub opróżnić z tego miejsca. Naciśnięcie przycisku oznaczonego
“Flush Magento Cache”
spowoduje opróżnienie wszystkich plików pamięci podręcznej, które pasują do określonego zestawu wbudowanych domyślnych tagów używanych przez Magento. Jest to „bezpieczniejszy” sposób na wyczyszczenie pamięci podręcznej, ponieważ nie usuwa absolutnie wszystkiego. Jeśli korzystasz z dodatkowych typów pamięci podręcznej, kliknięcie“Flush Cache Storage”
zapewni wyczyszczenie pamięci podręcznej, ponieważ powoduje wyczyszczenie WSZYSTKIEGO. Pozostałe dwa przyciski widoczne na stronie administratora wyczyszczą javascript i css oraz obrazy katalogu.Alternatywnym i nieco mniej bezpiecznym sposobem na wyczyszczenie pamięci podręcznej jest przejście do
i ręcznie usuwając wszystkie pliki. To samo dotyczy
jeśli masz włączone pełne buforowanie strony.
Pełny bufor strony, dostępny w wersji Enterprise Edition, przyspiesza witrynę 10-krotnie, ale ważne jest, aby wiedzieć o niej trochę, na wypadek, gdybyś zauważył, że buforowana jest zawartość dynamiczna. Ciekawym plikiem do obejrzenia jest
Tutaj możesz zobaczyć, co jest buforowane przez FPC, nazwę bloku, nazwę kontenera i czas życia sesji. Jeśli uznasz, że absolutnie konieczna jest edycja lub usunięcie któregokolwiek z tych bloków z pamięci podręcznej, możesz to zrobić, tworząc moduł zależny od modułu PageCache i umieszczając w nim wszelkie modyfikacje.
Znacznik zastępczy informuje FPC, że ten blok jest uważany za dynamiczny. Po załadowaniu strony, jeśli blok nie jest jeszcze w pamięci podręcznej, ta wartość identyfikatora w znacznikach zastępczych jest wyszukiwana w pamięci podręcznej, a jeśli nie istnieje, wówczas ten blok jest wywoływany i generowany, a identyfikator jest dodawany do pamięć podręczna.
Funkcję kompilacji Magento można znaleźć pod
Jeśli uruchamiasz nową instalację, prawdopodobnie pojawi się komunikat systemowy, że oba
includes and includes/src/
katalogi muszą mieć możliwość zapisu. Gdy to zrobisz, możemy nacisnąć przycisk „Uruchom proces kompilacji” i po prostu gotowe, rdzeń Magento korzysta z kompilacji.Kiedy Magento kompiluje swój kod źródłowy, framework robi kilka rzeczy. Być albo wywołane przez administratora lub
shell, see shell/compiler.php
wszystkie kompilacji odbywa się za pomocą jednej klasy:Mage_Compiler_Model_Process
. W tej klasie znajdziesz następujący fragment, który jest w rzeczywistości widokiem z lotu ptaka na cały proces.Rozpoczęty
$this->_collectFiles();
rozmową Magento kopiuje wszystkie pliki PHP z obui katalogi lib do
informator. Jak widać na poniższym fragmencie: podczas tego procesu Magento rekurencyjnie iteruje wszystkie pliki i katalogi. Te ścieżki są ostatecznie używane jako nazwa pliku. Gdy proces rekurencyjny trafi do pliku, sprawdzi, czy nie ma rozszerzenia PHP, a gdy zostanie znaleziony, plik zostanie skopiowany do katalogu kompilatora. Inne typy plików pozostają nietknięte.
Na przykład: ścieżka dla klasy Mage_Catalog_Model_Category była
ale z włączoną kompilacją stał się teraz
Kontrolery otrzymują inne leczenie. Wszystkie katalogi kontrolera są kopiowane
ale są przechowywane w katalogu, który ma nazwę pokrewnej przestrzeni nazw, pomyśl: Mage, Enterprise lub własną podaną przestrzeń nazw.
W tych katalogach przestrzeni nazw kontrolery są przechowywane dla każdego modułu, a struktura katalogu kontrolera pozostaje nietknięta. To samo dotyczy nazwy pliku, to tylko dokładna kopia. Całą tę logikę można znaleźć w następującej metodzie
$this->_copyControllers($path);
Ten drugi poziom kompilacji zbiera wszystkie zakresy i odpowiednie listy klas od administratora. Wszystkie te zakresy są przetwarzane przez pobranie zawartości powiązanych plików klas i zapisanie ich w jednym pliku nazwanym na podstawie podanego zakresu.
Domyślnie Magento tworzy cztery różne pliki zakresu:
Podczas procesu budowania tych plików zakresu Magento automatycznie analizuje wszystkie rozszerzenia klas i interfejsy, które są używane przez klasy znajdujące się na liście zakresów.
Po zainstalowaniu i skompilowaniu wszystkich plików Magento jest gotowy do włączenia funkcji kompilacji do użycia.
Na koniec dostosowywana jest konfiguracja związana z kompilacją. Ten plik można znaleźć w
includes/config.php
i zawiera następujące dwie stałe. Po włączeniu kompilacji wiersz dotyczący COMPILER_INCLUDE_PATH nie jest komentowany i dlatego jest gotowy do działania.Kod odpowiedzialny za dostosowanie pliku konfiguracyjnego można znaleźć w metodzie registerIncludePath metody
Mage_Compiler_Model_Process class
.Podczas ładowania początkowego plik konfiguracyjny kompilacji jest zawarty w pliku
index.php file (around line 44)
. Dzięki temu stałe include_path są dostępne w całym frameworku. Ścieżkę zbierania można włączyć tylko ręcznie, aby uzyskać więcej informacji statystycznych dotyczących wykorzystania skompilowanych plików. To nie powinno być włączone na żywo.Od tego momentu Magento sprawdzi, czy tryb kompilacji jest włączony za pomocą następującej instrukcji. Przeglądając bazę kodu (używając „grep”) zauważysz, że większość tej logiki można znaleźć w
lib/Varien/Autoload.php
pliku.Innym miejscem do poszukiwania jest
Mage_Core_Controller_Varien_Action
. W tej klasie znajdzieszpreDispatch()
metodę, która jest wyzwalana dla każdej metody akcji kontrolera, zanim metoda zostanie faktycznie wywołana. W tej części źródłowej klasy autoloadera Magento wzywa się Varien_Autoload do załadowania określonego pliku zakresu kompilacji.Podczas pracy w trybie kompilacji Magento ma tylko jedną ścieżkę dołączania,
includes/src/
katalog, więc każdy plik znajduje się bezpośrednio przy pierwszej próbie. Dzięki znacznej liczbie plików, które posiada Magento, oszczędza to sporo czasu. Poniższy fragment pochodzi zGdy PHP zawiera plik, zawartość jest kompilowana do opcode. Jest to proces, który należy wykonać za każdym razem, gdy plik jest dołączany. Aby jeszcze bardziej poprawić wydajność swojego sklepu, możesz zainstalować APC na swoim serwerze. APC buforuje zakodowane wersje plików, udostępniając je dla kolejnych żądań. Tak więc na następne żądanie: plik zostanie odczytany z pamięci podręcznej APC, zamiast ponownie przejść ten sam proces i obniżyć wydajność.
źródło
KOMPILATOR
Wszystkie pliki kompilatora można znaleźć w
includes/
Po prostu nie czyść.htaccess
lubconfig.php
. Jeśli zobaczyszconfig.php
Zauważysz, że wszystkie włączanie / wyłączanie kompilatora powoduje usuwanie komentarzy#
przed tymi dwomadefine
. Można bezpiecznie założyć, że prostyrm -Rf includes/src;rm -Rf includes/stat
z katalogu głównego Magento wyczyści skompilowane dane.Rozważ także użycie AOE_ClassPathCache wraz z APC, ponieważ będzie to zdecydowanie wystarczające, aby usunąć kompilator z równania.
Również więcej dyskusji na ten temat:
DACHY
Jest to ściśle określone na podstawie backendów buforowania, z których korzystasz
local.xml
. Jeśli używasz domyślnego modułufiles
obsługi pamięci podręcznej, to czyścisz,var/cache
a jeśli Enterprisevar/full_page_cache
. Jeśli używasz magazynu danych, takiego jak Memcache, musisz to zrobić za pośrednictwem MagentoFlush Cache Storage
lub za pomocą środków, które muszą wyczyścić / wyczyścić pamięć podręczną.Również więcej szczegółów na temat możliwych magazynów danych, Magento używa Zend_Cache do swoich mechanizmów buforowania. Zauważysz, że dotyczą
local.xml
Xpaths z pamięci podręcznej.UWAGA
Jeśli korzystasz z wersji Enterprise, znajdziesz drugi plik konfiguracyjny, w
etc/enterprise.xml
którym zdefiniowany jest magazyn danych dla FPC.Jaka jest różnica między pamięcią podręczną i opróżnianiem pamięci podręcznej:
źródło
Bardzo ważna uwaga na temat kompilatora Magento. Musisz wyłączyć takie rzeczy jak APC podczas kompilacji, ponieważ kompilator nie może skompilować zawartości APC i spowoduje uszkodzenie twojej kompilacji. Dla mnie oznaczałoby to rozładowanie APC na serwerze, a następnie ponowne uruchomienie Apache (httpd).
źródło