translation

Tekst przetłumaczony przez AI.

뚠뚠멍의 생각들

Pomiar wydajności witryny internetowej - PerformanceObserver

  • Język pisania: Koreański
  • Kraj odniesienia: Wszystkie krajecountry-flag
  • TO
Zdjęcie profilowe

Podsumowanie posta wygenerowane przez AI durumis

  • Wykorzystanie narzędzi do pomiaru wydajności witryny (PageSpeed Insights, Lighthouse) pozwala na poprawę wydajności i lepszą widoczność w wyszukiwarkach. Wskaźniki Web Core Vitals odgrywają kluczową rolę.
  • Aby poprawić wskaźniki takie jak CLS, LCP, FCP i FID, można zastosować techniki takie jak szkielety interfejsu użytkownika (UI Skeleton), optymalizację obrazów, usuwanie elementów blokujących renderowanie, optymalizację czcionek internetowych oraz asynchroniczne przetwarzanie JavaScript.
  • Oprócz omówienia metod poprawy poszczególnych wskaźników, przedstawiamy również inne techniki zwiększania wydajności witryny (np. kompresja gzip, Web Workers) i planujemy w przyszłości pogłębić omawiane zagadnienia.

Za pomocą witryny udostępnionej przez Google


można łatwo mierzyć wydajność witryny.


https://pagespeed.web.dev/
Możesz wprowadzić adres URL, aby go zmierzyć, lub zainstalować rozszerzenie Chrome Lighthouse, aby przeprowadzić pomiar.


Co daje poprawa wskaźników?

Możliwość lepszego wyświetlania się w wyszukiwarkach. SEO często wykorzystuje renderowanie po stronie serwera, ale

jeśli powyższe wskaźniki wydajności są niskie, jego skuteczność znacznie spada.


Jak je poprawić?

Na stronie web.dev szczegółowo opisano, jak poprawić każdy wskaźnik.

Szczególnie 3 wskaźniki mają duży wpływ na wynik (Web Core Vitals).

Chcę zapisać działania podjęte w celu poprawy wskaźników.


Jak mierzyć lokalnie?


export default () => {
if (process.client && 'PerformanceObserver' in window) {
let cumulativeLayoutShiftScore = 0;
let largestContentfulPaint = 0;
let firstInputDelay = 0;
let firstContentfulPaint = 0;
// CLS
const clsObserver = new PerformanceObserver((list) => {
  const entries = list.getEntries();
  entries.forEach((entry) => {
    if (!entry.hadRecentInput) {
      cumulativeLayoutShiftScore += entry.value;
    }
  });
});

// LCP
const lcpObserver = new PerformanceObserver((list) => {
  const entries = list.getEntries();
  const lastEntry = entries[entries.length - 1];
  largestContentfulPaint = lastEntry.startTime;
});

// FID
const fidObserver = new PerformanceObserver((list) => {
  const entries = list.getEntries();
  const firstEntry = entries[0];
  firstInputDelay = firstEntry.processingStart - firstEntry.startTime;
});

// FCP
const fcpObserver = new PerformanceObserver((list) => {
  const entries = list.getEntries();
  const firstEntry = entries[0];
  firstContentfulPaint = firstEntry.startTime;
});

clsObserver.observe({ type: 'layout-shift', buffered: true });
lcpObserver.observe({ type: 'largest-contentful-paint', buffered: true });
fidObserver.observe({ type: 'first-input', buffered: true });
fcpObserver.observe({ type: 'paint', buffered: true });

window.addEventListener('onload', () => {
  console.log('Final CLS Score:', cumulativeLayoutShiftScore);
  console.log('LCP:', largestContentfulPaint);
  console.log('FID:', firstInputDelay);
  console.log('FCP:', firstContentfulPaint);
});
}
};

Wstaw powyższy kod. W przypadku Nuxt umieść go w pliku plugins i sprawdź dane w konsoli.

Cumulative Layout Shift (CLS)

Mierzy stopień zmian układu podczas renderowania.

Załóżmy, że mamy stronę, na której w odpowiedzi API otrzymujemy adres URL obrazu i renderujemy obraz o rozmiarze 400x400.

Położenie niektórych elementów układu zostanie przesunięte o 400 pikseli w wyniku renderowania obrazu.

Jest to nieprzewidywalny ruch dla użytkownika, który negatywnie wpływa na UX, a także pośrednio na przeglądarkę, która

renderuje ekran.


Istnieją dwa proste sposoby na poprawę.


1. Zastosowanie szkieletu UI

- Większość witryn rysuje odpowiednie szkielety odpowiadające rozmiarowi obrazu lub komponentowi. Podczas tworzenia interfejsu należy wziąć to pod uwagę. W przypadku Vue za pomocą v-if i v-else można narysować szkielet dla każdego elementu.

2. Rezerwacja wysokości

- Zbyt wiele stylów w szkielecie może utrudnić konserwację i przynieść odwrotny skutek. Samo ustawienie min-height dla elementu, który ma być renderowany, może przynieść rezultaty.


- W przypadku stron responsywnych, w których rozmiar obrazu różni się w zależności od urządzenia, trudno jest ustawić stałą wysokość. W takim przypadku można skorzystać z najmniejszego urządzenia jako odniesienia lub użyć vh lub vw.

3. Określenie szerokości i wysokości dla elementu obrazu

- Szerokość i wysokość dla elementu obrazu można ustawić w następujący sposób.

<img src="image.jpg" width="400" height="400">

Nawet jeśli rzeczywisty rozmiar obrazu nie wynosi 400x400, informuje to przeglądarkę o przewidywanym rozmiarze obrazu.

4. Użycie font-display: swap w celu zapobiegania zmianom układu spowodowanym przez czcionki internetowe

- Podanie czcionki zastępczej zapobiega przesunięciom układu.



Largest Contentful Paint(LCP)

Czas renderowania największego elementu na ekranie. Zazwyczaj jest to obraz, więc intuicyjnie należy przyspieszyć czas ładowania.


1. Zmniejszenie rozmiaru obrazu.

- Sprawdź, czy rozmiar obrazu nie jest zbyt duży w porównaniu do rozmiaru renderowania.

- Zoptymalizuj renderowanie obrazu za pomocą rozszerzeń takich jak webp. W przypadku użycia kompresji stratnej webp ma o 30% mniejszy rozmiar pliku niż format JPEG, a w przypadku kompresji bezstratnej o 20% mniejszy niż png.

- Można również rozważyć lazy loading, który ładuje obrazy w zależności od położenia paska przewijania.


2. Wykorzystanie pamięci podręcznej lub CDN.

3. Usunięcie elementów blokujących renderowanie.

- Wpływa to na większość wskaźników pomiarowych, dlatego należy je koniecznie usunąć. Podczas renderowania ekranu przeglądarka najpierw pobiera skrypty z tagu head, a następnie renderuje, więc należy sprawdzić, czy skrypty w tagu head (zwykle zewnętrzne skrypty) muszą być renderowane jako pierwsze. Za pomocą tagów async i defer można łatwo nimi zarządzać.

* Atrybuty skryptów w nagłówku zostaną omówione w innym artykule.

4. Minimalizacja rozmiaru pakietów.

- Oprócz wolnego renderowania obrazu, jeśli przesyłanie z serwera jest wolne, należy go poprawić.

Jeśli używasz serwera proxy, takiego jak nginx, możesz użyć kompresji gzip.

* Konfiguracja nginx zostanie omówiona w innym artykule.

First Contentful Paint(FCP)

Oznacza moment, w którym na stronie pojawia się pierwsza treść.

1. Podobnie jak poprzednio, usuń elementy blokujące renderowanie.

2. Zminimalizuj rozmiar pliku HTML.

- Beztroskie otaczanie tagów div może prowadzić do utworzenia bardzo zagnieżdżonego drzewa i zwiększenia rozmiaru pliku.

3. Zewnętrzne czcionki internetowe mogą być problemem. Aktywnie używaj font-display: swap; aby renderować czcionkę domyślną jako pierwszą.


First Input Delay(FID)

Oznacza czas, jaki przeglądarka potrzebuje na obsłużenie pierwszej interakcji użytkownika ze stroną (kliknięcie, przewijanie itp.). Czasami zdarza się, że po naciśnięciu przycisku nic się nie dzieje, ale w rzeczywistości nie jest on niesprawny, a jedynie czeka na odpowiedź API.


1. Dobrze wykorzystuj asynchroniczność, aby główny wątek JavaScript nie był blokowany przez ciężkie operacje.

2. Możesz użyć web workera do wykonywania innych operacji niezależnie od głównego wątku.

* Web workery zostaną omówione w innym artykule.

Ze względu na ograniczenie liczby znaków kończę na tym.



뚠뚠멍
뚠뚠멍의 생각들
뚠뚠멍
Moje problemy z obsługą wielu przeglądarek (głównie Safari)Artykuł opisuje problemy z obsługą wielu przeglądarek (głównie Safari), które pojawiły się podczas tworzenia aplikacji mobilnych i sposoby ich rozwiązania. Omówione zostaną problemy z obliczniem wysokości viewportu, przesunięciem interfejsu użytkownika sp

September 27, 2024

Kluczowe ustawienia Nginx jako serwera WWWOpisujemy kluczowe ustawienia serwera WWW Nginx (kompresja gzip, proxy_buffer, ustawienia worker/http, blok location), które pozwalają zoptymalizować wydajność witryny. Zalecamy przeprowadzenie testów wydajności przed zastosowaniem zmian.

September 26, 2024

Podstawowe zasady CSS (Normal flow, BFC, IFC)Ten artykuł omawia podstawowe zasady CSS, takie jak Normal flow, BFC i IFC, dostarczając wiedzy niezbędnej do tworzenia układów stron i projektowania responsywnego.

September 7, 2024

Czym jest SEO na stronie?Dowiedz się więcej o SEO na stronie, które jest niezbędne do poprawy pozycji strony internetowej w wyszukiwarkach. Optymalizując różne elementy, takie jak jakość treści, użycie słów kluczowych, meta tagi, optymalizację obrazów, strukturę wewnętrznych link
꿈많은청년들
꿈많은청년들
꿈많은청년들
꿈많은청년들

May 28, 2024

Kompletny przewodnik po właściwości CSS object-fitDowiedz się, jak skutecznie zmieniać rozmiar i wyświetlać obrazy w sieci Web za pomocą właściwości CSS object-fit. Odkryj różne opcje, takie jak zachowanie proporcji obrazu, przycinanie i wypełnianie.
Meursyphus
Meursyphus
Meursyphus
Meursyphus

July 14, 2024

Optymalizacja SEO dla urządzeń mobilnych: Tworzenie przyjaznej dla urządzeń mobilnych witrynyWraz ze wzrostem liczby użytkowników urządzeń mobilnych, optymalizacja SEO dla urządzeń mobilnych stała się niezwykle istotna. Stwórz przyjazną dla urządzeń mobilnych witrynę internetową, wykorzystując responsywny design, szybkie ładowanie stron oraz pros
꿈많은청년들
꿈많은청년들
꿈많은청년들
꿈많은청년들

June 10, 2024

Wykorzystanie Google Cloud Storage i Cloud Run do tworzenia CDN – część 2Drugi wpis poświęcony wykorzystaniu Google Cloud Storage i Cloud Run do budowy sieci dostarczania treści (CDN). Opisujemy optymalizację przesyłania obrazów i plików tekstowych oraz dystrybucję zasobów w 8 regionach na całym świecie w celu zmniejszenia opó
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그
두루미스 기술 블로그

September 6, 2024

Co to jest SERP i jak go zoptymalizować: Jak znaleźć się na szczycie wyników wyszukiwaniaDowiedz się, jak zoptymalizować SERP, aby zwiększyć ruch na stronie internetowej i dotrzeć do potencjalnych klientów.
꿈많은청년들
꿈많은청년들
꿈많은청년들
꿈많은청년들

July 9, 2024

Format obrazu przyjazny SEO: Efekty i zastosowanie plików SVGUżywanie plików SVG do obrazów na stronach internetowych pozwala zmniejszyć ich rozmiar, zachować wysoką jakość i przyspieszyć ładowanie strony, co ma pozytywny wpływ na SEO.
꿈많은청년들
꿈많은청년들
꿈많은청년들
꿈많은청년들

May 22, 2024