Lista de Pré-visualizações de Tópicos (legado)

Olá, obrigado pelo excelente plugin!

Infelizmente, com a última atualização, as imagens que não estão hospedadas diretamente no Discourse não aparecem mais no modo Grade ou Ladrilhos. Poderia verificar isso?

Por exemplo, se o post tiver uma imagem de outro servidor (Blogger, Picasa, etc.), elas não aparecem mais. Anteriormente, funcionava muito bem sem nenhum problema.

1 curtida

As miniaturas agora são geradas pelo núcleo do Discourse e tenho pouca influência sobre isso.

Muita da lógica de geração de miniaturas foi removida e deixada para o Discourse.

Você pode querer levantar isso aqui: Theme modifiers: A brief introduction

2 curtidas

Obrigado! Acabei de criar uma resposta lá. Estou um pouco cético com todas as atualizações, já que todas as minhas imagens não estão hospedadas no servidor local.

2 curtidas

Acredito que ainda deve funcionar se seus ‘uploads’ estiverem hospedados em um servidor remoto via configurações, mas ele não fará mais hotlink para sites remotos e terceiros não afiliados.

Não faz mais sentido gerenciar essa parte da base de código no plugin, já que agora ela é tratada pelo núcleo. É absolutamente correto que você os contate para dar sequência :+1:

4 curtidas

Obrigado. Entendo a situação. Não é uma solução simples para o meu site, já que estamos usando outro servidor para hospedar as imagens. Agora, é muito difícil migrar para o servidor afiliado com tantos posts, e é grande demais para ser hospedado no servidor local.

1 curtida

O problema que estou enfrentando é que, quando o plugin de eventos está ativado, as miniaturas não aparecem mais no mobile, como discutido anteriormente. Eu achei que era disso que você estava falando.

Os thumbnails estão aparecendo corretamente para mim. Tem certeza de que atualizou os Eventos conforme @fzngagan?

2 curtidas

Ele deve ter feito o merge logo depois que eu testei, obrigado pessoal, tudo está funcionando agora!

3 curtidas

Atualizei ontem e tenho tido um desempenho bastante ruim. Analisando o profiler, vejo esta consulta do TLP que parece ser a culpada — talvez falte um índice aqui?

Curiosamente, essa consulta ainda aparece quando executo o site no modo de segurança :thinking:

1 curtida

Recursos Imagens. Esta consulta não mudou há muito tempo (anos!). Tem certeza de que se trata de um novo problema?

Você está ordenando pela data de criação da tag? Isso quase certamente resultará em uma consulta complexa. Ordenar por Mais Recente será mais suave.

Você pode sempre desativar esse recurso por enquanto.

O Componente de Tema usa a API principal. Você pode alternar e usá-la por enquanto, se isso estiver te causando problemas.

1 curtida

Isso é novo desde que atualizei para o PG12, imagino. E precisamos mesmo de ordenação por data de criação da tag; isso é uma ‘funcionalidade’ central da nossa comunidade. O que eu perderia se mudasse para o TC?

Ps: Lembro vagamente de ter discutido a mesma questão com você anos atrás, envolvendo a linha em destaque. Vou dar uma pesquisada.

2 curtidas

Tem certeza de que a atualização do PG 12 concluiu a reindexação? Muitos usuários relataram um período de desempenho reduzido durante esse processo (e esses relatos não estavam relacionados ao TLP).

A propósito, pensando melhor, algo mais pode ter mudado, pois agora é necessário fazer um join com topic_thumbnails. No entanto, isso ocorreu há algum tempo e não houve outros relatos. Suspeito que antes ele usava apenas o hotlink image_url no objeto Topic, o que seria mais rápido (um join a menos), mas isso não está mais disponível para nós devido a uma mudança no core. Isso pode estar contribuindo para o problema.

1 curtida

Sim, a reindexação foi concluída. A ordenação por data de criação do tópico apresenta o mesmo problema. Aqui está a saída do EXPLAIN para ambas as consultas:

Ordenado por data de marcação:

discourse=# explain SELECT "topics"."id", "topics"."title", "topics"."last_posted_at", "topics"."created_at", "topics"."updated_at", "topics"."views", "topics"."posts_count", "topics"."user_id", "topics"."last_post_user_id", "topics"."reply_count", "topics"."featured_user1_id", "topics"."featured_user2_id", "topics"."featured_user3_id", "topics"."deleted_at", "topics"."highest_post_number", "topics"."like_count", "topics"."incoming_link_count", "topics"."category_id", "topics"."visible", "topics"."moderator_posts_count", "topics"."closed", "topics"."archived", "topics"."bumped_at", "topics"."has_summary", "topics"."archetype", "topics"."featured_user4_id", "topics"."notify_moderators_count", "topics"."spam_count", "topics"."pinned_at", "topics"."score", "topics"."percent_rank", "topics"."subtype", "topics"."slug", "topics"."deleted_by_id", "topics"."participant_count", "topics"."word_count", "topics"."excerpt", "topics"."pinned_globally", "topics"."pinned_until", "topics"."fancy_title", "topics"."highest_staff_post_number", "topics"."featured_link", "topics"."reviewable_score", "topics"."image_upload_id" 
discourse-# FROM "topics" 
discourse-# INNER JOIN "topic_tags" 
discourse-# ON "topic_tags"."topic_id" = "topics"."id" 
discourse-# INNER JOIN "tags" ON "tags"."id" = "topic_tags"."tag_id" 
discourse-# WHERE ("topics"."deleted_at" IS NULL) 
discourse-# AND "topics"."visible" = TRUE 
discourse-# AND (NOT topics.closed AND NOT topics.archived AND topics.deleted_at IS NULL) 
discourse-# AND (topics.image_upload_id in (
discourse(#         SELECT image_upload_id FROM topic_thumbnails
discourse(#       ))
discourse-# AND (tags.id IN (1)) 
discourse-# 
discourse-# ORDER BY (
discourse(#  SELECT created_at FROM topic_tags
discourse(#         WHERE topic_id = topics.id
discourse(#         AND tag_id IN (1)
discourse(#         LIMIT 1
discourse(# )
discourse-# 
discourse-# DESC LIMIT 6; 
                                                                    QUERY PLAN                                                         
            
---------------------------------------------------------------------------------------------------------------------------------------
------------
 Limit  (cost=2631719.94..2631719.95 rows=6 width=569)
   ->  Sort  (cost=2631719.94..2631721.73 rows=717 width=569)
         Sort Key: ((SubPlan 1)) DESC
         ->  Nested Loop  (cost=0.43..2631707.09 rows=717 width=569)
               ->  Seq Scan on tags  (cost=0.00..4.51 rows=1 width=4)
                     Filter: (id = 1)
               ->  Nested Loop  (cost=0.43..2625737.13 rows=717 width=565)
                     ->  Seq Scan on topic_tags  (cost=0.00..860.33 rows=1539 width=8)
                           Filter: (tag_id = 1)
                     ->  Index Scan using topics_pkey on topics  (cost=0.43..1705.57 rows=1 width=561)
                           Index Cond: (id = topic_tags.topic_id)
                           Filter: ((deleted_at IS NULL) AND visible AND (NOT closed) AND (NOT archived) AND (deleted_at IS NULL) AND (
SubPlan 2))
                           SubPlan 2
                             ->  Seq Scan on topic_thumbnails  (cost=0.00..2966.64 rows=171664 width=8)
               SubPlan 1
                 ->  Limit  (cost=0.29..8.31 rows=1 width=8)
                       ->  Index Scan using index_topic_tags_on_topic_id_and_tag_id on topic_tags topic_tags_1  (cost=0.29..8.31 rows=1
 width=8)
                             Index Cond: ((topic_id = topics.id) AND (tag_id = 1))
 JIT:
   Functions: 25
   Options: Inlining true, Optimization true, Expressions true, Deforming true
(21 rows)

Ordenado por data do tópico:

discourse=# explain SELECT "topics"."id", "topics"."title", "topics"."last_posted_at", "topics"."created_at", "topics"."updated_at", "topics"."views", "topics"."posts_count", "topics"."user_id", "topics"."last_post_user_id", "topics"."reply_count", "topics"."featured_user1_id", "topics"."featured_user2_id", "topics"."featured_user3_id", "topics"."deleted_at", "topics"."highest_post_number", "topics"."like_count", "topics"."incoming_link_count", "topics"."category_id", "topics"."visible", "topics"."moderator_posts_count", "topics"."closed", "topics"."archived", "topics"."bumped_at", "topics"."has_summary", "topics"."archetype", "topics"."featured_user4_id", "topics"."notify_moderators_count", "topics"."spam_count", "topics"."pinned_at", "topics"."score", "topics"."percent_rank", "topics"."subtype", "topics"."slug", "topics"."deleted_by_id", "topics"."participant_count", "topics"."word_count", "topics"."excerpt", "topics"."pinned_globally", "topics"."pinned_until", "topics"."fancy_title", "topics"."highest_staff_post_number", "topics"."featured_link", "topics"."reviewable_score", "topics"."image_upload_id" FROM "topics" INNER JOIN "topic_tags" ON "topic_tags"."topic_id" = "topics"."id" INNER JOIN "tags" ON "tags"."id" = "topic_tags"."tag_id" WHERE ("topics"."deleted_at" IS NULL) AND "topics"."visible" = TRUE AND (NOT topics.closed AND NOT topics.archived AND topics.deleted_at IS NULL) AND (topics.image_upload_id in (
        SELECT image_upload_id FROM topic_thumbnails
      )) AND (tags.id IN (1)) ORDER BY (SELECT created_at FROM topic_tags
        WHERE topic_id = topics.id
        AND tag_id IN (1)
        LIMIT 1)
        DESC LIMIT 6; 
                                                                    QUERY PLAN                                                         
            
---------------------------------------------------------------------------------------------------------------------------------------
------------
 Limit  (cost=2631719.94..2631719.95 rows=6 width=569)
   ->  Sort  (cost=2631719.94..2631721.73 rows=717 width=569)
         Sort Key: ((SubPlan 1)) DESC
         ->  Nested Loop  (cost=0.43..2631707.09 rows=717 width=569)
               ->  Seq Scan on tags  (cost=0.00..4.51 rows=1 width=4)
                     Filter: (id = 1)
               ->  Nested Loop  (cost=0.43..2625737.13 rows=717 width=565)
                     ->  Seq Scan on topic_tags  (cost=0.00..860.33 rows=1539 width=8)
                           Filter: (tag_id = 1)
                     ->  Index Scan using topics_pkey on topics  (cost=0.43..1705.57 rows=1 width=561)
                           Index Cond: (id = topic_tags.topic_id)
                           Filter: ((deleted_at IS NULL) AND visible AND (NOT closed) AND (NOT archived) AND (deleted_at IS NULL) AND (
SubPlan 2))
                           SubPlan 2
                             ->  Seq Scan on topic_thumbnails  (cost=0.00..2966.64 rows=171664 width=8)
               SubPlan 1
                 ->  Limit  (cost=0.29..8.31 rows=1 width=8)
                       ->  Index Scan using index_topic_tags_on_topic_id_and_tag_id on topic_tags topic_tags_1  (cost=0.29..8.31 rows=1
 width=8)
                             Index Cond: ((topic_id = topics.id) AND (tag_id = 1))
 JIT:
   Functions: 25
   Options: Inlining true, Optimization true, Expressions true, Deforming true
(21 rows)
2 curtidas

Útil. Obrigado.

Desculpe, não tenho certeza de quando poderei fazer isso.

Além disso, esteja ciente de que o novo join pode ser melhorado mas não consigo removê-lo. (oh, sim, eu poderia!).

1 curtida

OK, trabalhei com @bartv offline para melhorar isso.

Isso afeta apenas o Plugin, não o TC:

Recomendo atualizar para aproveitar, pois isso é uma grande melhoria para sites que usam Imagens em Destaque.

5 curtidas

Você é um craque! :guitar:

3 curtidas

Sua investigação detalhada também foi crucial, Bart, obrigado.

3 curtidas

Olá, adicionei a URL do git clone ao app.yml dos containers, mas ao tentar reconstruir o app, recebo o seguinte erro:

(<unknown>): encontrado um caractere de tabulação que viola a indentação ao escanear um escalar simples na linha 91 coluna 13 -e LANG=en_US.UTF-8

E o site não funcionou.

Removi a URL do git clone para o plugin e tudo voltou a funcionar.

1 curtida

Acho que seu problema não é específico deste plugin. Você não pode usar tabulações no seu app.yml. Use espaços.

2 curtidas

Certo, desculpe. Copiei e colei a última linha do plugin e alterei a URL do git clone. Agora funciona, obrigado :slight_smile:

2 curtidas