Estou me perguntando se devo armazenar longos artigos formatados em html em meu banco de dados MySQL ou se seria melhor armazenar uma referência a um arquivo e incluí-lo. Não são apenas parágrafos, mas listas, tabelas, imagens ( <img src="">
's) e outros recipientes contendo notas laterais e afins. Os artigos geralmente têm algo entre 150.000 e 250.000 caracteres (incluindo espaços). Mas isso exclui tags html.
Funciona bem armazenando-o no banco de dados. Mas queria saber se havia uma abordagem melhor?
Não há opções de pesquisa neste site.
Eu recomendaria que você colocasse o mínimo possível de HTML em seu banco de dados . Um padrão de design muito popular para sites é o padrão Model-View-Controller .
Usando esse padrão, seus dados (autor, título, categorias, conteúdo do artigo, etc.) seriam armazenados no banco de dados sem tags HTML e seriam chamados de Modelo. Em seguida, a estrutura da página HTML seria armazenada em um arquivo chamado View. O Controlador seria responsável por aceitar as solicitações HTTP, solicitar os dados apropriados do banco de dados e mesclar/enviar esses dados com/para a exibição.
Qualquer plataforma de programação web comum deve ser capaz de acomodar esse padrão.
Plano A O HTML já está construído e nunca muda.
Armazene apenas um URL no banco de dados e diga ao navegador para acessar esse URL. Afinal, é assim que as imagens são feitas.
Assim como acontece com as imagens, metade dos gurus recomenda armazenar as páginas no banco de dados, não como arquivos separados. Esse é um debate separado. (Foi discutido muitas vezes, mas nunca realmente resolvido.)
Plano B Você está criando o HTML em tempo real.
Nesse caso, você precisa do texto acessível para montagem. Pode envolver dezenas ou centenas de registros espalhados por várias tabelas, especialmente porque você inclui "listas". Agora o html é apenas pedaços. Você ainda tem uma escolha importante a fazer.
htmlentities()
(ou equivalente) após buscar o texto e antes de envolvê-lo com tags html.Nota
Quando você tem grandes blocos de texto em uma tabela, normalmente será mais eficiente comprimi-los no cliente e armazená-los em um arquivo
BLOB
.