Od dłuższego czasu mam przyjemność prowadzenia paru stron z pomocą WordPress MultiSite. Niestety pomimo optymalizacji kodu / grafiki strony działające na silniku WordPress w wersji MultiSite, ładowały się wolniej ( około 1900 ms – całość strony ) od tych działających na standardowych instalacjach ( 800 ms ). Początkowo jednak nie przejmowałem się tym zbytnio, zrzucając winę na obciążony już znacznie serwer. Byłem też przekonany, że pokazywany na wykresie średni czas pobierania strony ( Google Narzędzia dla Webmasterów ) ulegnie znaczniej zmianie po aktywowaniu wtyczki WP Super Cache. Niestety nawet precyzyjne ustawienie tego dodatku ( z zaznaczeniem opcji wspierania pluginu WordPress MU Domain Mapping ) nie przyniosło dobrych rezultatów.
Pierwsza część planu, uruchomienie cachowania, nie przyniosła efektów. Postanowiłem więc trochę dokładniej sprawdzić przyczyny i zlokalizować wolno działający kawałek kodu. Okazało się, że w pewnej konfiguracji wtyczek oraz ich ustawień dzieją się dziwne rzeczy.
Okoliczności:
Zainstalowane i uruchomione wtyczki:
- WordPress MU Domain Mapping
- WP Super Cache ( z opcją wspierania WordPress MU Domain Mapping )
Dodatkowo:
- Niezalogowany użytkownik odwiedzający stronę w domenie innej niż główna domena sieci stron. Czyli najważniejszy przypadek 🙂
Dziwne zachowanie:
- Wysyłanie zapytania do głównej domeny sieci stron ( czas około 1100 ms ) . Zapytanie zakończone oczywiście błędem.
Przyczyny:
- Po długich poszukiwaniach winowajcą okazał się dodatek WordPress MU Domain Mapping, który wysyłał zapytanie do domeny głównej sieci. Zapytanie to miało na celu zalogowanie do wszystkich stron sieci jednocześnie. Oczywiście wspomniany plugin posiada możliwość skonfigurowania, jednak w połączeniu z WP Super Cache ten punkt konfiguracji zdaje się być pomijany.
Rozwiązanie:
- Wyłączenie funkcji / kodu odpowiedzialnej za błędne zapytanie.
Jak:
- Lokalizujemy plik: /wp-content/mu-plugins/domain_mapping.php
- W znalezionym pliku szukamy „function remote_login_js_loader”.
- I teraz możemy wykomentować zawartość funkcji ( lub tylko część odpowiedzialną za wypisywanie – echo zapytania ). Druga opcja to zlokalizowanie wszystkich wywołań tej funkcji i ich wycofanie.
Po takich zabiegach strony działają normalnie. Teraz już tylko pozostaje cieszyć się zaletami WordPress MS i szukać sposobu przeniesienia innych stron na WP MS 🙂