„Home Assistant działa szybciej za drugim razem” może opisywać kilka różnych mechanizmów. Przeglądarka może ponownie wykorzystać zasoby interfejsu, już otwarty pulpit może otrzymywać aktualny stan przez WebSocket zamiast przebudowywać stronę, system operacyjny może przechowywać w pamięci strony bazy danych lub konfiguracji, a integracja może ponownie wykorzystać ustanowione połączenie.
Określanie wszystkich tych efektów mianem „pamięci podręcznej Home Assistant” ukrywa miejsce, w którym następuje przyspieszenie. Przydatny model polega na nazwaniu powtarzanego żądania, a następnie określeniu, która warstwa może uniknąć pracy przy drugim uruchomieniu.
Pamięć podręczna przeglądarki przyspiesza zasoby interfejsu
JavaScript, style, ikony, niestandardowe karty i inne zasoby interfejsu mogą pozostać w pamięci podręcznej przeglądarki, dzięki czemu ponowne ładowanie strony nie wymaga pobierania ani ponownego tworzenia tych samych zasobów od podstaw.
Aktualne wskazówki Home Assistant dotyczące przeglądarek wyraźnie informują, że interfejs użytkownika przechowuje wiele elementów w pamięci podręcznej przeglądarki, aby działać szybko. Ta sama pamięć podręczna może stać się nieaktualna po aktualizacjach lub zmianach niestandardowych kart, dlatego wymuszone odświeżenie może naprawić nieprawidłowo działający interfejs.
Ta pamięć podręczna wpływa na uruchamianie i renderowanie strony, a nie na fizyczną szybkość sterowania urządzeniami. Jej wyczyszczenie to test interfejsu, a nie ogólny reset wydajności serwera.
Otwarty pulpit ponownie wykorzystuje ścieżkę bieżącego stanu WebSocket
Po nawiązaniu połączenia z interfejsem nie musi on ponownie pobierać całego stanu inteligentnego domu przy każdej zmianie. Otrzymuje aktualizacje i subskrypcje przez API WebSocket oraz aktualizuje odpowiednie elementy interfejsu.
Aktualna architektura interfejsu opisuje, jak interfejs otrzymuje podstawowy stan za pośrednictwem współdzielonego obiektu hass i synchronizuje dodatkowe subskrybowane dane przez WebSocket. Tablet ścienny, który pozostaje połączony, ma więc inną ścieżkę powtarzanych żądań niż telefon otwierający pulpit po raz pierwszy każdego ranka.
Nie należy traktować tego ponownego wykorzystania jako dowodu, że znacznie większa liczba klientów będzie skalować się liniowo. Każdy dodatkowy klient nadal może zwiększać obciążenie związane z serializacją, subskrypcjami, żądaniami historii i renderowaniem po stronie klienta.
Pamięć stron systemu Linux przyspiesza ponowne odczyty plików i baz danych
Standardowe odczyty systemu plików przechodzą przez pamięć stron systemu Linux. Ostatnio używane strony baz danych, pliki konfiguracyjne i zasoby statyczne mogą pozostać w pamięci, eliminując konieczność ponownego fizycznego odczytu z nośnika przy kolejnym żądaniu.
Aktualna dokumentacja jądra Linux wyjaśnia, że standardowe odczyty plików zapełniają pamięć stron, dzięki czemu kolejne odczyty mogą uniknąć bardziej kosztownego dostępu do nośnika. Oznacza to, że powtarzane zapytanie History może skorzystać z pamięci, nawet jeśli Home Assistant nie zaimplementował specjalnej pamięci podręcznej aplikacji dla tego konkretnego zapytania.
Dlatego różnice między dyskiem SSD a HDD mogą wyglądać na mniejsze w rozgrzanym teście niż po ponownym uruchomieniu, usunięciu danych z pamięci podręcznej lub przy znacznie większym zbiorze roboczym.
Rozgrzane dane nie oznaczają, że podstawowe zapytanie stało się tańsze
Żądanie History nadal może skanować lub indeksować tę samą logiczną ilość danych, podczas gdy potrzebne strony akurat znajdują się w pamięci. Pulpit nadal może żądać tych samych encji, gdy zasoby i stan połączenia są już dostępne.
Powiązany przewodnik ZimaSpace dotyczący testu porównawczego oddzielania wydajności z rozgrzaną pamięcią podręczną od rzeczywistej przepustowości pokazuje praktyczne następstwo: pamięć podręczna jest przydatna, ale deklaracja dotycząca możliwości musi wytrzymać realistyczną presję na pamięć podręczną i długotrwałe obciążenie.
Trafienie do pamięci podręcznej usuwa jeden koszt z jednego żądania. Nie eliminuje obciążenia procesora, pamięci, sieci, bazy danych ani integracji, które należy do innych etapów tej ścieżki.
Różne powtarzane żądania rozgrzewają różne warstwy
- Ponowne ładowanie tego samego pulpitu: zasoby przeglądarki i środowisko uruchomieniowe klienta mogą być już rozgrzane.
- Pozostawienie otwartego tabletu ściennego: stan WebSocket i subskrypcje pozostają aktywne.
- Powtarzanie tego samego zakresu History: strony bazy danych i systemu plików mogą pozostać w pamięci.
- Wywoływanie tej samej usługi lokalnej: ustanowione połączenia integracji lub sieciowe mogą już istnieć.
- Otwieranie po ponownym uruchomieniu: kilka z tych warstw może być jednocześnie nieaktywowanych.
Mierz warstwę odpowiadającą działaniu użytkownika, zamiast czyścić każdą pamięć podręczną i nazywać to „naukowym podejściem”.
FAQ
Czy wyczyszczenie pamięci podręcznej przeglądarki spowalnia Home Assistant Core?
Wpływa głównie na ścieżkę ładowania interfejsu. Core nadal wykonuje tę samą logikę serwera, ale przeglądarka może ponownie pobierać i tworzyć zasoby, przez co pierwsze ładowanie interfejsu będzie wolniejsze.
Czy rozgrzane zapytanie History jest bezużyteczne w testach wydajności?
Nie. Rozgrzane zapytania odzwierciedlają rzeczywiste warunki pracy. Błędem jest uznawanie wyniku rozgrzanego zapytania za jedyny wynik dotyczący możliwości, gdy presja na pamięć, ponowne uruchomienie lub większy zbiór roboczy mogą usunąć tę samą przewagę pamięci podręcznej.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Stan bieżący a stan trwały w Home Assistant: co musi przetrwać ponowne uruchomienie?
Home Assistant nie zachowuje trwale każdej bieżącej wartości; konfiguracja, rejestry, wybrane przywracane stany, historia i dane wdrożeniowe pełnią różne funkcje podczas ponownego uruchamiania.

Jak Home Assistant uwierzytelnia sesje lokalne i zdalne?
Lokalne i zdalne sesje Home Assistant korzystają z tego samego modelu tożsamości po stronie serwera; zdalny dostęp zmienia trasę i granicę TLS, ale nie...

Dlaczego zapytania do historii Home Assistant mogą zwalniać w miarę przyrostu danych rejestratora?
Wzrost liczby rekordów może zwiększyć koszt zapytań do historii, gdy żądany zakres obejmuje więcej wierszy, rośnie liczba chybień pamięci podręcznej lub operacje na pamięci...

