KamoCRM

Nie ładuj zawartości_json, aby zbudować indeks drzew publicznych i przestań go dwukrotnie załadować

PerformanceKBService
Shipped
23 września 2026 02:17 UTC
Author
Kamo
Commit
155e7de

buildPublicTreeIndex buduje niewielki indeks strukturalny (rodzic / dziecko, ścieżka ślimaka, przodkowie) Każdy artykuł publiczny w orgu, ale ładowano pełne wiersze artykułu Kb, aby to zrobić — content_json Uwzględniono, mierzoną w wysokości 6,6 KB na rzędy w porównaniu z kilkoma setkami bajtów dla reszty rzędu łącznie. Indeks drzew i wszystko w jego strumyku (wyciąg na każdej liście / węzeł drzewny, ścieżka i Rozdzielczość przodków) nigdy nie czyta content_json; tylko jeden artykuł czyta go serializuje, i to Jednorzędowe rzęs pochodzi już z jego odrębnego wyglądu. Drzewo/lista/lista 300-artykułowa organizacji Odpowiedź polegała na tym, że wyciągnięto z bazy danych tekstu 2 MB ciała, aby natychmiast odrzucić go dla wszystkich, ale - W jednym rzędzie. Wybiera wszystko, co indeks faktycznie odczytuje po imieniu (a Zapytanie projekcji JPQL, nie metoda repozytorium — KbArtykułRepozytorium żyje w kamo-shared-libiry, poza zakresem tego Regulaminu) i buduje rzeczywiste przypadki artykułów z wierszy za pośrednictwem własnego budowniczego jednostki, Nigdy nie upierał się ani nie przywiązywał do sesji. Każdy istniejący czytnik PublicTreeIndex pracuje Niezmieniony; getContentJson() na jednym z nich jest po prostu zerwany, co ma znaczenie tylko do kodu, który Serializuje to i nic poza czytaniem pojedynczych artykułów nie robi. Oddzielnie, /drzew po próchnicy-slug zwany obydwoma (która załadowała własne Kopia każdego publicznego artykułu, aby odbudować tę samą mapę dla dzieci buildPublicTreeIndex już buduje) I buildPublicTreeIndex — jedno żądanie, pełna lista artykułów w całym orgach załadowana dwukrotnie. Ten pierwszy teraz Weźmielnie, że dzwoniący już zbudował jako parametr zamiast go odbudować. Również translateRefs (breadcrumbs i "see również" linki, nie-angielski) rozstrzygnął tłumaczenie każdego absolutu Poprzez ponowne wypatrzenie stanowiska sędziego ref z powrotem do KbArtykuł, a następnie zapytanie o jego tłumaczenie — dwa zapytania Na ref. Ref już nosi artykuł, który obecnie nazywa (KbArticleRefDTO.uid, internal Tylko – „JsonIgnoruj, nigdy w odpowiedzi publicznej), więc Zamiast tego rozwiązuje każdy sędzia na liście w jednym autramentzie IN kweruły. Testy: KbArtykułServiceTreeIndexTest twierdzi, że projekcja przenosi każde pole pełne obciążenie jednostki Zbudowano by (contentJson wyjął, twierdził, że null) i że budowana jest cierpka/słodzia obliczenie Z niego jest ten sam trzypoziomowy kształt, jaki wytworzyłby pełne obciążenie - oprawy oparte na oprawie Star-vs-new check. - ćwiczenia /przez-slug koniec do końca po francusku i Udowadnia, że wyrwany lookup zastępuje guid round-trip Nigdy nie wzywałem do sędziego).

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing