# Funcionalidade experimental 'lazy\_loaded\_categories' ativada na Meta

**URL:** https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836
**Category:** Feature
**Tags:** feedback, experimental, lazy-load-categories
**Created:** [19 Março , 2024 11:11 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836 "2024-03-19T11:11:18Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![nbianca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nbianca/32/157984_2.png) [@nbianca](https://meta.discourse.org/u/nbianca)
#### Post date: [19 Março , 2024 11:11 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/1 "2024-03-19T11:11:18Z")

</div>

ℹ _Este projeto está em pausa por enquanto. Podemos revisitá-lo no futuro e publicaremos uma atualização aqui, caso isso ocorra._

_Estamos introduzindo um recurso experimental para ajudar comunidades com um grande número de categorias. 🚀_

Nas últimas semanas, temos trabalhado intensamente para melhorar o funcionamento dos sites Discourse em comunidades com muitas categorias (e não apenas!). Isso permitirá que os administradores criem milhares de categorias, mantendo a experiência de usuário amigável com a qual você está familiarizado.

Este é ainda um recurso experimental e pode ser ativado alterando a configuração do site `lazy_loaded_categories_groups`. Atualmente, ele está desativado por padrão.

### ⚙ Como isso funciona?

No momento, todos os dados das categorias são carregados quando você navega até uma comunidade Discourse. Isso é chamado de “carregamento antecipado” (eager loading) e não é ideal para sites com muitas categorias, pois significa que muitas informações são transferidas antes da primeira renderização, o que aumenta o tempo geral de carregamento.

O novo método é chamado de “carregamento sob demanda” (lazy loading) e adiará o carregamento das informações sobre uma categoria até que seja realmente necessário (por exemplo, ao pesquisar por uma categoria, navegar ou vincular uma, ler um tópico ou postagem que mencione uma, etc.). Menos dados transferidos significa tempo de carregamento mais rápido e usuários mais satisfeitos! ⭐

### :discourse: O que isso significa para você, como membro da Meta?

Temos testado intensamente esse recurso internamente, mas, dada a extensão do trabalho realizado, há uma pequena chance de introduzir bugs. Se você notar qualquer mau funcionamento relacionado às categorias, informe-nos respondendo a este tópico ou abrindo um tópico em #Contribute > Bug.

### 🧑‍🤝‍🧑 O que isso significa para você ou sua comunidade?

Seja você hospedado por nós ou se estiver hospedando por conta própria, este recurso está desativado por padrão e não deve haver alterações visíveis.

No entanto, se você está pensando em expandir sua comunidade para ter muitas categorias, recomendamos fortemente que você ative este recurso.

No futuro, pretendemos ativá-lo por padrão e, eventualmente, descontinuar e remover o código que faz o “carregamento antecipado” das categorias.

### 🧑‍💻 O que isso significa para desenvolvedores de plugins e temas?

Em geral, não deverá haver alterações necessárias para a maioria dos plugins, desde que utilizem os componentes de categoria do núcleo ou dados pré-carregados (por exemplo, consulte apenas categorias que já estão visíveis ao carregar a página, pois isso significa que elas já foram pré-carregadas).

Alguns problemas podem surgir ao tentar usar informações de categorias que ainda não foram carregadas. O método `Category.findByIds` continuará retornando apenas as categorias que já foram carregadas, enquanto `Category.asyncFindByIds` pode realizar uma consulta no servidor se as informações ainda não tiverem sido carregadas.

---

<div class="post-metadata">

### Author: ![nbianca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nbianca/32/157984_2.png) [@nbianca](https://meta.discourse.org/u/nbianca)
#### Post date: [19 Março , 2024 11:15 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/7 "2024-03-19T11:15:42Z")

</div>



---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [20 Março , 2024 23:27 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/9 "2024-03-20T23:27:54Z")

</div>

As informações da categoria parecem estar ausentes quando você usa um dos links abaixo de uma postagem para navegar para um tópico em uma categoria diferente. Abri [Contributing translations to Discourse](https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882) em uma nova aba e naveguei para [Switching from Transifex to Crowdin](https://meta.discourse.org/t/switching-from-transifex-to-crowdin/140288), então fica assim:

 ![Screenshot_20240321_002109_Chrome](https://global.discourse-cdn.com/meta/original/4X/7/2/f/72f670968e3f9032ac3cc4c1a0e2b66657bf4fa8.jpeg)  
Após uma recarga, a categoria aparece.

 ![Screenshot_20240321_002132_Chrome](https://global.discourse-cdn.com/meta/original/4X/2/9/0/290b03482afe1c82f2eba5fdb6642bae89a85e86.jpeg)

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [21 Março , 2024 15:23 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/11 "2024-03-21T15:23:19Z")

</div>

Depois que postei meu tópico #site-feedback:theme-feedback, o selo da categoria estava faltando para os tópicos dessa categoria

 ![Screenshot_20240321_162054_Chrome](https://global.discourse-cdn.com/meta/original/4X/0/0/b/00bc16b619529b0e116564f690e228a7e8336787.jpeg)

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [22 Março , 2024 16:37 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/12 "2024-03-22T16:37:10Z")

</div>

A função de pesquisa dentro do compositor não consegue determinar se há uma categoria correspondente.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [23 Março , 2024 22:02 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/13 "2024-03-23T22:02:40Z")

</div>

Isso também está relacionado às categorias carregadas preguiçosamente?

 ![Screenshot_20240323_225802_Chrome](https://global.discourse-cdn.com/meta/original/4X/2/2/6/22618ae4aeb7b44e06e8a6b94cc3604518eca4e3.jpeg)

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [23 Março , 2024 22:36 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/14 "2024-03-23T22:36:40Z")

</div>

Sim. Desativei o lazy\_load\_categories por enquanto porque ele estava quebrando o plugin de documentação.

---

<div class="post-metadata">

### Author: ![nbianca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nbianca/32/157984_2.png) [@nbianca](https://meta.discourse.org/u/nbianca)
#### Post date: [4 Abril , 2024 11:29 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/18 "2024-04-04T11:29:29Z")

</div>

Reativamos este experimento aqui. O que foi corrigido desde que foi ativado pela última vez:

- As categorias no cabeçalho são preenchidas corretamente, especialmente ao navegar de um tópico para outro usando links de posts ou tópicos sugeridos

- A estilização de badges será exibida corretamente após a criação de um novo tópico em uma categoria que não foi acessada anteriormente

- O plugin Docs pré-carrega os dados das categorias, portanto, a página /docs agora é renderizada corretamente

- Outros bugs que foram descobertos através de revisão interna

O único bug pendente é sobre os resultados de pesquisa ausentes para certas consultas (consultas curtas ou consultas que contêm apenas stop words).

Queríamos tornar a pesquisa mais poderosa e estendemos o mecanismo de busca de texto completo para as categorias, e este é um efeito colateral indesejado. Acho que teremos que reverter o algoritmo de pesquisa anterior, mas ainda estamos investigando isso.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [4 Abril , 2024 11:39 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/19 "2024-04-04T11:39:41Z")

</div>

As categorias de moderadores de categoria em /about estão faltando

 ![Screenshot_20240404_133817_Chrome](https://global.discourse-cdn.com/meta/original/4X/5/2/0/520a2c91b379717c82bcc53e5bb2deffa45b9456.jpeg) ![Screenshot_20240404_133756_Chrome](https://global.discourse-cdn.com/meta/original/4X/2/b/2/2b2cabc5938ff3c0ae6e1426efc2c0de69e7224c.jpeg)

E quando olho meus rascunhos, as categorias também estão faltando.

 ![_20240404_134642](https://global.discourse-cdn.com/meta/original/4X/2/6/3/263ef8af52fa07fa5d85c23b6e01626941e55da6.jpeg) ![_20240404_134508](https://global.discourse-cdn.com/meta/original/4X/5/0/f/50febfbf2594f1744655c2c4b03a74a5fc36a584.jpeg)

A página de atividade de um grupo ou usuário e as notificações no meu perfil, como [https://meta.discourse.org/my/notifications/responses](https://meta.discourse.org/my/notifications/responses), não carregam categorias.

 ![_20240404_135517](https://global.discourse-cdn.com/meta/original/4X/2/b/4/2b441bb7f350bff8bcddd8d685f33b7f8ccf7807.jpeg) ![_20240404_135534](https://global.discourse-cdn.com/meta/original/4X/9/5/4/954697bddcb0e1b20279260cba79c1300f2f0e94.jpeg)

 ![_20240404_140539](https://global.discourse-cdn.com/meta/original/4X/6/c/c/6cc8d4498ae34ebda03a5b80f5fe89911af2ded2.jpeg) ![_20240404_140553](https://global.discourse-cdn.com/meta/original/4X/6/e/f/6eff3cc4975494c99666f16093f7972938a925c0.jpeg)

Quando você abre o composer para iniciar um novo tópico com um link em uma mensagem ou clicando em nova mensagem na sua caixa de entrada e usando o envelope no canto superior esquerdo do composer para transformar o rascunho em um novo rascunho de tópico, não há opção para escolher uma categoria.

 ![image](https://global.discourse-cdn.com/meta/original/4X/4/4/d/44d052c1c7f1325b928d819cb6e0672f8a090ec4.png)

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [5 Abril , 2024 17:36 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/20 "2024-04-05T17:36:12Z")

</div>

Ao abrir /categories, nem todas as subcategorias de #Documentation são exibidas (#documentation:theme-developers desaparece após recarregar até que eu clique em #Documentation).

E a autocompletar para pesquisar categorias não funciona. A maioria das categorias não é exibida após recarregar

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [7 Abril , 2024 16:14 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/21 "2024-04-07T16:14:28Z")

</div>

As categorias também estão faltando na lista de tópicos relacionados.

 ![Screenshot_20240407_180407_Chrome](https://global.discourse-cdn.com/meta/original/4X/6/5/0/6501cf85080940cda47e100c93a446686fd4630c.jpeg)  
 ![Screenshot_20240407_180339_Chrome](https://global.discourse-cdn.com/meta/original/4X/5/7/9/579eae7c9b2b3174a34ec718c134a20d5c7cf822.jpeg)

E quando visitei os tópicos para carregar as categorias para a segunda captura de tela, notei que no segundo tópico #Announcements > Blog, a categoria abaixo do título do tópico estava faltando. Presumo que isso não seja importante porque não deveria acontecer quando os tópicos relacionados funcionarem.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [11 Abril , 2024 09:32 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/22 "2024-04-11T09:32:24Z")

</div>

> [@nbianca](#):
>
> Em geral, deve haver pouca ou nenhuma alteração necessária para a maioria dos plugins, desde que eles usem os componentes de categoria do núcleo ou dados pré-carregados

Isso parece estar causando um problema em um dos meus plugins no 3.2.1 stable.

Quando inspeciono `Site.current().categories` e o carregamento preguiçoso está ativado, vejo (apenas) as categorias que preciso (como a categoria para o tópico atual), mas todos os `preloaded_category_custom_fields` parecem estar faltando.

Eles aparecem quando desativo o carregamento preguiçoso (junto com todas as outras categorias).

Portanto, a categoria correta está sendo pré-carregada, mas faltam seus campos pré-carregados.

---

<div class="post-metadata">

### Author: ![nbianca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nbianca/32/157984_2.png) [@nbianca](https://meta.discourse.org/u/nbianca)
#### Post date: [12 Abril , 2024 10:57 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/24 "2024-04-12T10:57:27Z")

</div>

> [@Moin](#):
>
> As categorias dos moderadores de categoria em /about estão faltando

Isso foi corrigido. ✅

> [@Moin](#):
>
> E quando olho meus rascunhos, as categorias também estão faltando.

Corrigido também. ✅

> [@Moin](#):
>
> A página de atividade de um grupo ou usuário e as notificações no meu perfil, como [Discourse Meta - The Official Support Forum for Discourse](https://meta.discourse.org/my/notifications/responses), não carregam categorias.

Corrigido também. ✅

Os outros problemas estão sendo trabalhados no momento. Muito obrigado pelo seu feedback, @Moin.

> [@RGJ](#):
>
> Quando inspeciono `Site.current().categories` e o carregamento preguiçoso está habilitado, eu vejo (apenas) as categorias que preciso (como a categoria para o tópico atual), mas todos os `preloaded_category_custom_fields` parecem estar faltando.

Depende de como as categorias foram carregadas. Concordo que provavelmente existem alguns caminhos de código que podem levar ao carregamento de dados parciais de categorias. Comunicarei com a equipe sobre este problema, mas como estamos nos movendo em direção a um estado onde o frontend terá que solicitar os dados de que precisa antes de acessá-los.

É um plugin público? Se sim, posso dar uma olhada. Em geral, os plugins mais populares que temos exigiram pouquíssimas alterações para fazê-los funcionar quando o “carregamento preguiçoso de categorias” está habilitado.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [12 Abril , 2024 11:03 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/25 "2024-04-12T11:03:26Z")

</div>

> [@nbianca](#):
>
> > [@Moin](#):
> >
> > As categorias dos moderadores de categoria em /about estão faltando
> 
> Isso foi corrigido. ✅

A cor da categoria pai ainda está faltando

 ![Screenshot_20240410_113214_Chrome](https://global.discourse-cdn.com/meta/original/4X/a/6/e/a6e7e3cbc2891778e33d8203bc79c4093155cd03.jpeg)  
 ![Screenshot_20240410_113239_Chrome](https://global.discourse-cdn.com/meta/original/4X/0/1/e/01ea1be7a2058831f9e2ee78c5eabfccf6e8ee25.jpeg)

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [12 Abril , 2024 11:08 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/26 "2024-04-12T11:08:51Z")

</div>

> [@nbianca](#):
>
> Depende de como as categorias foram carregadas. Concordo que provavelmente existem alguns caminhos de código que podem levar ao carregamento de dados parciais de categoria.

Está acontecendo em uma visualização de tópico regular.

A única coisa que pode ser especial é que o código está em um inicializador, em um widget que está anexado ao widget `post-contents:before`. O plugin não é público, mas posso lhe dar acesso se você me enviar seu nome de usuário do Github por mensagem privada. Alternativamente, posso enviar-lhe um PM com um tar.gz, o que pode ser mais fácil. O plugin é antigo e não foi escrito originalmente por mim, mas não vejo nada que esteja obviamente errado.

> [@nbianca](#):
>
> já que estamos nos movendo em direção a um estado onde o frontend terá que solicitar os dados de que precisa antes de acessá-los.

Então, como isso funcionará? Posso entender a situação binária onde uma categoria está lá ou onde ela não está lá. Mas se eu encontrar uma categoria sem um campo personalizado específico, como saberei se o campo personalizado está ausente ou se ele ainda não foi totalmente carregado?

> [@nbianca](#):
>
> carregamento de dados parciais de categoria

ou seja, isso nunca deveria estar acontecendo!

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [15 Abril , 2024 11:47 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/28 "2024-04-15T11:47:48Z")

</div>

> [@nbianca](#):
>
> É um plugin público? Se sim, posso dar uma olhada. Em geral, os plugins mais populares que temos exigiram poucas alterações para funcionar quando a “carregamento lento de categorias” está ativado.

Então você pode me ajudar com este, @nbianca?

Quando o carregamento lento está ativado, os campos personalizados estão faltando no objeto de categoria [aqui](https://github.com/communiteq/discourse-private-replies/blob/master/assets/javascripts/discourse/initializers/extend-for-private-replies.js.es6#L53) no meu plugin público de respostas privadas.

```plaintext
      if ((siteSettings.private_replies_on_selected_categories_only == false) || (topic?.category?.custom_fields?.private_replies_enabled)) {
        return this.currentUser && ((this.currentUser.id == topic_owner_id) || this.currentUser.staff);
      }

```

E eu não tenho ideia de como obtê-los.

Estou [adicionando](https://github.com/communiteq/discourse-private-replies/blob/master/plugin.rb#L165C1-L165C69) o campo aos campos personalizados de categoria pré-carregados.

` Site.preloaded_category_custom_fields << 'private_replies_enabled'`

---

<div class="post-metadata">

### Author: ![nbianca](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nbianca/32/157984_2.png) [@nbianca](https://meta.discourse.org/u/nbianca)
#### Post date: [15 Abril , 2024 15:55 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/30 "2024-04-15T15:55:42Z")

</div>

> [@RGJ](#):
>
> Quando o carregamento preguiçoso (lazy loading) está ativado, os campos personalizados estão faltando no objeto de categoria [aqui](https://github.com/communiteq/discourse-private-replies/blob/master/assets/javascripts/discourse/initializers/extend-for-private-replies.js.es6#L53) no meu plugin de respostas privadas públicas.

Estou discutindo isso internamente com a equipe, mas acho que teremos que revisar como pré-carregamos as categorias para os tópicos.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [18 Abril , 2024 15:39 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/31 "2024-04-18T15:39:31Z")

</div>

Encontrei outro local onde as categorias estão faltando: os resultados da pesquisa de IA.

 ![Resultados da pesquisa de IA](https://global.discourse-cdn.com/meta/original/4X/9/1/7/91799d82b98c4c8c72028b42f7f239ca9c7e96dc.png)

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [23 Abril , 2024 10:48 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/32 "2024-04-23T10:48:45Z")

</div>

Ao atualizar [meta.discourse.org](http://meta.discourse.org) e selecionar **+ Novo Tópico** , o modelo de tópico falha ao aparecer. Inicialmente, como demonstrado no vídeo, tudo funciona corretamente. No entanto, após recarregar, o modelo está ausente. Assim que abro o compositor novamente, tudo volta a funcionar como esperado.

Observação: Se você tiver #Support na sua barra lateral, deverá removê-la antes de recarregar.

---

<div class="post-metadata">

### Author: ![JimmyHoke](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jimmyhoke/32/341886_2.png) [@JimmyHoke](https://meta.discourse.org/u/JimmyHoke)
#### Post date: [25 Abril , 2024 20:59 UTC](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836/33 "2024-04-25T20:59:56Z")

</div>

Baseado e escalável.

[Next page](https://meta.discourse.org/t/experimental-lazy-loaded-categories-feature-enabled-on-meta/299836.md?page=2)
