KamoCRM

No cargues content-json para construir el índice del árbol público, y deja de cargarlo dos veces

PerformanceKBService
Se descapó
23 de septiembre de 2026 a las 2:17 UTC
Autor
Kamo
Compromit
155e7de

buildPublicTreeIndex construye un pequeño índice estructural (padre/hijo, ruta de babosa, antepasados) de cada artículo público en el org, pero estaba cargando filas completas de KbArticle para hacerlo. incluido, medido en 6,6 KB por fila contra unos pocos cientos de bytes para el resto de una fila combinada. El índice del árbol y todo lo aguas abajo (el extracto en cada lista / nodo de árbol, camino y resolución de antepasado) nunca lee contento.json; sólo una lectura de un solo artículo lo serializa, y eso Una fila ya viene de su propia búsqueda separada. Árbol/lista/lista o soltera de una organización de 300 artículos La respuesta fue sacar de la base de datos 2 MB de texto corporal para desecharlo inmediatamente para todos, pero una fila. **************** seleccione todo lo que el índice realmente lee por nombre (a La búsqueda de proyección de JPQL, no un método de repositorio . KbArticleRepository vive en la biblioteca compartida de kamo, fuera de alcance aquí) y construye instancias reales de KbArticle desde las filas a través de la propia constructora de la entidad, nunca persistió ni se apegó a la sesión. Cada lector existente de PublicTreeIndex sigue trabajando Sin cambios; getContentJson (en uno de estos es simplemente nulo, lo que sólo importa para codificar que serializa, y nada fuera de una sola lectura lo hace. Por separado, / árbol-by-padre-slug llamado ambos ************* (que cargó su propio copia de cada artículo público para reconstruir el mismo mapa de niños construirPublicTreeIndex ya construye) y construirPublicTreeIndex, la lista de artículos completa de toda lana cargada dos veces. El primero ahora toma el índice que el llamante ya construido como parámetro en lugar de reconstruirlo. Además, translateRefs (breadcrumbs y "ver también" enlaces, no-inglés) resolvió la traducción de cada ref volviéndose a mirar el guis de la osaz del árbitro hasta un KbArticle y luego cuestionando su traducción. por ref. Un árbitro ya lleva el uid del artículo que nombra ahora (KbArticleRefDTO.uid, interno sólo "JsonIgnorar, nunca en la respuesta del público), así ******************* resuelve cada árbitro en una lista en una consulta en una consulta en forma de lo que se reconstruida. Pruebas: KbArticleServiceTreeIndexTest afirma que la proyección lleva a cada campo una carga de entidad completa habría (contenidoJson exceptuado, declarado nulo) y que el cómputo árbol/camión/ancestor construido de ella es la misma forma de tres niveles que una carga de entidad completa habría producido - el accesorio basado en el accesorio antibúsqueda nueva. **************** ejercicios /by-slug end to end to end en francés y prueba que la búsqueda por lotes reemplaza el viaje ida guid **************** es Nunca pidió un árbitro).

Todos los cambios

Como lo que ves enviaste?

Todo llega a su espacio de trabajo por sí solo. Comience en el plan gratuito y lea esta página de nuevo en un mes.

Arranzar gratis para siempreVer Precios