Jak poprawić czas reakcji serwera?


17

Co mogę zrobić, oprócz używania wtyczki pamięci podręcznej, takiej jak jotcache, aby poprawić czas odpowiedzi serwera w mojej witrynie?

Usunąłem już wszystkie nieaktywne moduły artykułów, wtyczki i komponenty. Czy mogę coś jeszcze zrobić, aby to poprawić?

Mówię o czasie, w którym klient (przeglądarka) otrzyma odpowiedź na jego żądanie . Nie czas ładowania strony.


Czas na odpowiedź to czas przed zakończeniem dokumentu php, więc chcesz spojrzeć na wywołania sql i php, a następnie buforować pytania HTML, które sugeruję
tristanbailey,

Kiedy mówisz o czasie odpowiedzi serwera - czy masz na myśli odpowiedź serwera, gdy żądanie jest składane po raz pierwszy, czy masz na myśli czas, jaki zajmuje serwerowi przygotowanie i wyświetlenie strony? Uruchom witrynę za pomocą testu szybkości Pingdom i opublikuj wyniki, a następnie możemy podać konkretne rozwiązania rzeczywistego problemu.
Brent Friar

Odpowiedzi:


25

Istnieje kilka kroków, które można wykonać, aby zwiększyć wydajność po stronie serwera. Pamiętaj, że niektóre z nich nie będą działać z większością udostępnianych hostów. Aby uzyskać doskonałą wydajność, zwykle potrzebujesz dokładniejszej kontroli.

Podobnie jak w przypadku każdej optymalizacji, należy zmierzyć jej wpływ na wydajność witryny. Do podstawowych optymalizacji służą narzędzia takie jak PageSpeed i YSlow (polecam wersje Firefox). Aby uzyskać bardziej dogłębne zrozumienie, będziesz musiał zmierzyć rzeczywisty czas reakcji twojego systemu na żywo w pewnym okresie czasu.

PHP

  1. Włącz buforowanie kodów operacyjnych

    Jest to prawdopodobnie jedna z największych rzeczy, które możesz zrobić, aby zwiększyć wydajność swojej witryny. Polecam użycie OpCache lub APC . Konfiguracja tych pamięci podręcznych może zostać zmodyfikowana w celu uzyskania jeszcze większej wydajności w oparciu o specyficzne potrzeby serwerów i witryn, ale sama instalacja jest już ogromnym ulepszeniem.

  2. Zaktualizuj wersję PHP

    Nowsze wersje PHP regularnie zawierają ulepszenia wydajności. Ponadto istnieje wiele przypadków, w których Joomla może użyć lepszego kodu, gdy działa na nowszej wersji PHP. Na dzień dzisiejszy nie powinieneś używać wersji PHP starszej niż PHP 5.4, jeśli zależy Ci na wydajności.

  3. Ustawienia PHP

    W starszych wersjach PHP (<= 5,3) wyłącz się register_globalsi magic_quotes_gpcwygrywaj za darmo. W PHP> = 5.6 zmień always_populate_raw_post_datana -1.

  4. Rozszerzenia PHP

    Joomla zawiera kod do obejścia brakujących rozszerzeń PHP. To zawsze będzie wolniejsze niż te rozszerzenia. Za przyzwoitą poprawy wydajności zainstalować następujące rozszerzenia: mbstring, zip,ftp

Serwer internetowy

  1. Włącz gzip

    Włączenie kompresji po stronie serwera powoduje zamianę przepustowości zasobów procesora. W przypadku większości witryn jest to właściwe połączenie. Uważaj, aby kompresować tylko dane tekstowe, kompresja danych binarnych da ci hit CPU bez przewagi przepustowości. Możesz także włączyć kompresję w ustawieniach Joomla, ale lepiej, jeśli pozwolisz serwerowi sobie z tym poradzić.

  2. Wstępnie skompresuj zasoby statyczne

    Nie mówię o minifikacji (choć to też pomaga), ale możesz skonfigurować Nginx i Apache do serwera już skompresowanych zasobów, skutecznie eliminując uderzenie procesora z kompresji gzip. Punkty bonusowe: użyj Zopfli do jeszcze mniejszych plików.

  3. Użyj FastCGI dla PHP

    Dokładniej powinieneś użyć php-fpm. Zapobiega to uruchomieniu PHP, gdy przeglądarka żąda pliku innego niż PHP.

  4. Użyj odpowiednich nagłówków pamięci podręcznej

    Użycie Expiresnagłówka może znacznie zmniejszyć wymagane zasoby serwera. W końcu najszybsze żądanie nigdy nie zostało wykonane.

Apacz

Ogólnie polecam używanie Nginx do witryn o wysokiej wydajności. Jeśli z jakiegoś powodu absolutnie potrzebujesz użyć Apache, dostaję dodatkową wskazówkę:

  1. Wyłącz AllowOverride

    Ustawienie AllowOverridedo Nonezapobiega dużo dysków i IO

Joomla

  1. Nie używaj trybu FTP

    Chociaż nie wpływa to na użytkowników czytających witrynę, spowolni niektóre operacje, takie jak instalacja rozszerzenia.

  2. Wyłącz nieużywane rozszerzenia

    Dotyczy to zwłaszcza wtyczek, wiele z nich jest uruchamianych na każde żądanie. Wyłączenie menu i komponentów jest pomocne głównie przy wyświetlaniu listy dostępnych rozszerzeń i typów menu. Poświęć również 5 minut na przejrzenie rozszerzeń dostarczonych z rdzeniem Joomla i wyłączenie tych, których nie używasz.

  3. Wyłącz Przygotuj zawartość

    Jeśli korzystasz z wielu niestandardowych modułów ( mod_customniestandardowych, jak napisane samodzielnie), sprawdź, czy możesz wyłączyć w nich opcję Przygotuj zawartość. Oszczędza to trochę przetwarzania.

  4. Użyj buforowania

    Jeśli poważnie myślisz o wydajności, chcesz włączyć buforowanie. Szczególnie przydatny do czytania ciężkich witryn z wieloma anonimowymi użytkownikami. Zalogowani użytkownicy ominą większość pamięci podręcznej, jeśli masz ich dużo, efekt nie będzie tak duży.

  5. Użyj alternatywnego modułu obsługi sesji

    Korzystając z alternatywnego modułu obsługi sesji, możesz zwolnić bazę danych na ważniejsze rzeczy. Nie polecam pliku (myląco nazywanego Brak w ustawieniach Joomla), ponieważ spowoduje to ponowne zwiększenie IO dysku. Korzystanie z APC jest potencjalnie szybkie, ale zwiększa ryzyko utraty wszystkich danych sesji. Prawym środkiem jest Memcache. Chociaż wymaga to dodatkowego procesu, jest bardziej niezawodne niż APC i znacznie szybsze niż przechowywanie wszystkich danych w bazie danych

  6. Uprość swoją witrynę

    Czy naprawdę potrzebujesz tego przycisku na Facebooku? Co z tą uroczą ikoną, której nikt nigdy nie widzi, ponieważ jest częściowo ukryta za jakimś sztandarem? Im mniej witryna wyświetla, tym szybciej będzie. Tam, gdzie to możliwe, używaj CSS3 zamiast obrazów.

Różne

  1. Ustaw favicon

    Dzięki decyzji sięgającej wstecz do przeglądarek Internet Explorer 4.0 wysyłanie żądania do pliku wywoływanego favicon.icoza każdym razem, gdy użytkownik odwiedza Twoją witrynę. Jeśli go nie masz, powoduje to niepotrzebne operacje wejścia / wyjścia, ponieważ 404 odpowiedzi nie są buforowane. Podaj ikonę witryny za pomocą metatagu HTML lub dodaj plik wywoływany favicon.icodo katalogu głównego. Nie chcesz favikonu? W tym miejscu umieść przezroczysty plik PNG o rozmiarze 1x1 piksela. Pamiętaj, że rozszerzenie musi nadal być .ico.

  2. Zoptymalizuj swoje zdjęcia

    To niesamowite, jaki rodzaj oszczędności można uzyskać, optymalizując obrazy, zwłaszcza pliki PNG. Istnieje wiele narzędzi dostępnych dla każdego systemu operacyjnego, osobiście używam ImageOptim, który jest dostępny dla OS X. Podstawowe obrazy Joomla są już zoptymalizowane, ale przeglądaj własne obrazy, szczególnie szablony są ważne. Możesz także sprawdzić używane rozszerzenia. Jeśli są to oprogramowanie typu open source, to dlaczego nie wysyłasz żądania ściągnięcia zawierającego nowo zoptymalizowane obrazy?

Zaawansowany

Jeśli naprawdę chcesz wyjść na całość, rozważ umieszczenie Lakieru na swojej stronie. Buforuje żądania do Twojej witryny i, jeśli to możliwe, obsługuje je z własnej pamięci podręcznej, nigdy nie uderzając w Joomla. To złożone narzędzie, ale o dużej mocy. Joomla nie skorzysta z zaawansowanych funkcji, takich jak Edge Side Includes (ESI), ale twój własny kod może.


8
To wydaje się ... raczej nieprzyjazne. Tylko do waszej wiadomości, właśnie to napisałem, tekst nie był w żaden sposób przygotowany. Możesz google google. Pamiętaj, że odpowiedzi powinny nie tylko pomóc pierwotnemu pytającemu, ale również przyszłym użytkownikom, którzy znajdą tutaj swoją drogę.
Rouven Weßling,

13

Jedną z WIELKICH rzeczy, które możesz zrobić, aby skrócić czas reakcji witryny, jest aktualizacja ustawień modułu. Moduły niestandardowe (wykorzystujące mod_custom) mają opcję włączania / wyłączania przygotowywania treści. Umożliwia to uruchamianie wtyczek treści na treści danych w niestandardowym module. Jest potężny, gdy jest właściwie stosowany, ale dodaje dodatkowy czas renderowania do wyjścia modułu. O ile nie korzystasz z wtyczki treści w niestandardowej zawartości modułu, najlepiej ją wyłączyć. Gdy to zrobisz, zobaczysz zmniejszenie czasu renderowania modułu.

Zrzut ekranu z ustawieniem: wprowadź opis zdjęcia tutaj

Uwaga: Jeśli moja odpowiedź pomogła Ci, kliknij pole wyboru po lewej stronie, aby zaakceptować odpowiedź.


3
Nigdy wcześniej nie widziałem sekcji przygotowania treści. Do jakiej wersji Joomla to dotyczy?
TryHarder

1
jeśli jest włączony, wtyczki mogą działać na zawartości. Jeśli więc umieścisz krótkie kody pozycji modułów lub inne krótkie kody wtyczek w niestandardowym obszarze tekstowym HTML, nie będą one wyświetlane, po prostu zobaczysz np. „{Tag_name}” na stronie internetowej, a nie w przygotowanej wersji
tristanbailey

2
Opcja „Przygotuj zawartość” jest zawarta w Joomla 2.5 i 3.x. Domyślne ustawienie to „Nie”.
Neil Robertson

8

Zakładam, że prowadziłeś witrynę z prędkością strony Google i rzeczywiście chcesz skrócić czas odpowiedzi strony, tj. Czas potrzebny na przesłanie znaczników do przeglądarki.

Najbardziej prawdopodobnymi winowajcami są ciężkie zapytania. Włącz debugowanie i spójrz na dół strony, aby dowiedzieć się, które są najcięższe zapytania, i usuń je lub zmniejsz. Możesz także skorzystać z wolnych dzienników zapytań serwera MySQL.

Następną rzeczą, na którą możesz spojrzeć, jest buforowanie. W zależności od rodzaju witryny możesz włączyć konserwatywne lub progresywne buforowanie. Progresywnego należy używać w witrynach, które nie mają funkcji powiązanych z użytkownikiem.


Czy możesz podać jakieś wskazówki lub zrzuty ekranu dotyczące wyglądu ciężkich zapytań? Czy jest jakiś próg do osiągnięcia?
David Fritsch

To zależy od twojej aplikacji. Jednak każde zapytanie, które wyląduje w dzienniku powolnych zapytań (które w normalnych ustawieniach rejestruje każde zapytanie trwające dłużej niż 1 sekundę), jest dobrym kandydatem do zerwania i / lub umieszczenia w pamięci podręcznej. Kolejna rzecz, która może zabrzmieć głupio, ale upewnij się, że wszystkie zapytania mają LIMIT.
Ashwin Data

6

Wiem, że mogą pomóc (z których większość została wymieniona):

  1. Buforowanie
  2. Kompresja (rozpakuj pliki css i js)
  3. Łączenie plików (cały twój css łączy się w jeden plik)
  4. Przesyłanie obrazów i plików do CDN.

Użyłem kombinacji wbudowanej pamięci podręcznej Joomla (lub nawet włączonej APC na serwerze) i wtyczek takich jak plugin rockbooster gzip lub rocket. Korzystam również z wtyczki CDN innej marki z kontem Amazon.

To zdecydowanie pomaga, ale musisz obserwować witrynę i wyłączyć pamięć podręczną dla składników, które mają problemy. Musiałem ominąć CiviCRM na naszej stronie, ponieważ nie grało dobrze z buforowaniem. Joomla posiada wtyczkę cachecontrol, która może to obsłużyć.


2
łącz i kompresuj swoje zdjęcia, jeśli to możliwe. Duszki mogą zapisywać dziesiątki żądań na ładowanie strony.
ContextSwitch

Zawsze zapominam o duszkach. :)
Brian Peat

jedna uwaga dotyczy duszków - obrazy tła nie są wyświetlane po przełączeniu systemu Windows w tryb wysokiego kontrastu. Chociaż takie zachowanie jest mile widziane w przypadku grafiki ogólnej, stanowi problem dla elementów sterujących, które muszą zostać kliknięte przez użytkownika - po prostu znikają (przykład: przyciski do głosowania na tej stronie)
miroxlav

Heh Brian Peat, zastanawiam się, czy możesz być zainteresowany pomocą w uruchomieniu witryny CiviCRM na StackExchange. Potrzebujemy zleceniodawców, którzy mają ponad 200 reputacji na innej stronie StackExchange : area51.stackexchange.com/propozycje/77367/civicrm Na zdrowie!
Joe Murray

Spojrzę na to. To wszystko było oparte na Joomla i nie zajmowałem się programowaniem, ale być może będę w stanie pomóc z podstawowymi pytaniami.
Brian Peat

4

Będziesz także chciał ograniczyć liczbę lokalnych zasobów i właściwe buforowanie. Jedną rzeczą, którą możesz zrobić, to użyć wtyczek CDN. Oto dwa polecam:

„corePHP” jomCDN - https://www.corephp.com/joomla-products/jomcdn

NoNumbers CDN dla Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Również jeśli żadne z powyższych nie wydaje się rozwiązać problemów, możesz mieć głębszy problem - być może w obrębie szablonu, samego serwera lub innych rzeczy. W takim przypadku najlepiej zatrudnić kogoś, kto wyszuka problem i rozwiąże problem.


3

Możesz również użyć tego kodu w pliku .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

to wydaje się interesujące, czy możesz wyjaśnić, co to robi?
web-tiki

@ web-tiki To ustawienie wygasa nagłówków. Wygasają nagłówki informują przeglądarkę, czy powinny żądać określonego pliku z serwera, czy też powinny pobrać go z pamięci podręcznej przeglądarki. Cały pomysł Expires Headers polega nie tylko na zmniejszeniu obciążenia pobrań z serwera (ciągłe pobieranie tego samego pliku, gdy jest niezmodyfikowany, marnuje cenny czas ładowania), ale raczej na zmniejszeniu liczby żądań HTTP dla serwera. ODNIESIENIE gtmetrix.com/add-expires-headers.html
TryHarder,

2

Za pomocą Joomla stworzyłem ponad setki stron internetowych!

W większości przypadków ludzie myślą, że Joomla działa mocno na serwerze, ale zgodnie z przeprowadzonymi przeze mnie analizami najważniejszą rzeczą, aby utrzymać SZYBKOŚĆ swojej witryny, jest OPTYMALIZACJA OBRAZÓW i JS / CSS.

Nie używaj edytorów Joomla, takich jak JCE, aby po prostu zmienić rozmiar obrazu. Użyj edytorów obrazów, takich jak Photoshop lub inny edytor, aby zmienić rozmiar zdjęć do wymaganego rozmiaru!

Użyj narzędzi do kompresji JS / CSS.

Zawsze używamy narzędzi Pingdom do analizowania prędkości witryny i używamy wbudowanej funkcji T3 Framework do optymalizacji JS / CSS!


Jakich narzędzi używasz do kompresji JS / CSS? Jakieś rekomendacje na temat tego, w jaki sposób ktoś może przeanalizować swoją witrynę, tak jak Ty, dla swoich witryn?
David Fritsch

Zawsze używamy narzędzi Pingdom do analizowania prędkości witryny i używamy wbudowanej funkcji T3 Framework do optymalizacji JS / CSS!
Gev Balyan

2
Z powodzeniem korzystałem również z optymalizacji JCH w celu uzyskania dużej kompresji i minimalizacji. Inną opcją jest użycie mod_pagespeed Apache, który zasadniczo implementuje większość zaleceń Google Pagespeed.
Ashwin Data

2
Wszystkie dobre narzędzia. @GevBalyan, polecam dodanie takich odpowiedzi do swojej odpowiedzi za pomocą linków. Oszczędza ludziom trochę googlingu! Możesz nawet edytować tę odpowiedź, aby dodać ją do tej. :)
David Fritsch

Narzędzia kompresujące, które nie buforują, mogą faktycznie wydłużyć czas odpowiedzi serwera, ponieważ wydłuża czas przetwarzania odpowiedzi serwera.
Don Gilbert

1

Czy usunąłeś nieużywane wtyczki? Joomla musi załadować i przetworzyć każdą opublikowaną wtyczkę pod kątem zdarzeń wywołanych w żądaniu.

Musisz zrozumieć zainstalowane rozszerzenia i ich interakcje z Joomla!

Wiele rozszerzeń instaluje wtyczki, które zarządzają aktywnością treści, systemu lub użytkownika w celu uruchomienia funkcji kodu. Niektóre z nich mogą być zbyteczne.

Wiem, że k2 instaluje wiele wtyczek, które reagują na zdarzenia związane z językiem, które nie generują rzeczywistych wyników dla witryn w jednym języku. Cofnięcie publikacji tych wtyczek może skrócić czas przetwarzania.


Czy możesz o tym porozmawiać? Co rozumiesz przez „wywołane zdarzenia”? Jak mogę powiedzieć, które zdarzenia są wyzwalane?
David Fritsch

1
Dobre pytanie. Musisz zrozumieć zainstalowane rozszerzenia i ich interakcje z Joomla! Wiele rozszerzeń instaluje wtyczki, które zarządzają aktywnością treści, systemu lub użytkownika w celu uruchomienia funkcji kodu. Niektóre z nich mogą być zbyteczne. Wiem, że k2 instaluje wiele wtyczek, które reagują na zdarzenia związane z językiem, które nie generują rzeczywistych wyników dla witryn w jednym języku. Cofnięcie publikacji tych wtyczek może skrócić czas przetwarzania. Podobnie jednak sam K2 miał zły nawyk budowania kosztownych zapytań w celu uzyskania wątpliwych wartości.
Joomsavvy

1
Czy możesz zaktualizować swoją odpowiedź o informacje w swoim komentarzu?
Harald Leithner

1

Popraw zasoby serwera / planu hostingowego

Być może nie odpowiedź, której szukał OP, ale warto o niej wspomnieć, na wypadek, gdyby nie było to oczywiste dla wszystkich (i nikt nie wspomniał o tym jeszcze): popraw zasoby serwera, takie jak pamięć, procesor i szybkość dysku.

Jeśli korzystasz z udostępnionego hostingu internetowego, przejście z planu „ekonomicznego” na plan „biznesowy” lub inny bardziej zaawansowany plan może poprawić zasoby serwerów dostępne w witrynie i skrócić czas reakcji serwera. Pomocne może być także przejście do firmy hostingowej lepszej jakości (np. Z mniej zatłoczonymi współdzielonymi serwerami hostingowymi).

Lepszy plan hostingowy może również dać ci dostęp do ulepszeń wydajności, które nie są zawarte w podstawowym planie hostingowym. Na przykład plany hostingowe „GrowBig” i „GoGeek” SiteGround obejmują dynamiczną pamięć podręczną, która znacznie skraca czas odpowiedzi serwera. Opcja dynamicznej pamięci podręcznej nie jest dostępna w planie „Uruchamianie”.

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.