Renderização de marcação on-the-fly ou loja de html?
Pergunta
Qualquer conselho que tem trabalhado para você quando se trata de marcação introduzidos pelo utilizador, por exemplo, wiki ou remarcação. Eu tenho ambos os custos de CPU e espaço de banco de dados, por isso não tenho certeza de qual caminho a percorrer.
-
markup loja no banco de dados e prestar a html no servidor para cada exibição de página. (Menos espaço de banco de dados, mas mais o uso da CPU)
-
markup loja no banco de dados e prestar a html no cliente usando javascript. (Possivelmente mais difícil de implementar)
-
loja apenas o html processado no banco de dados e converter de volta para marcação se editando necessário. (Mais uma vez, possivelmente complicado para implementar).
-
Loja ambos html & marcação no base de dados. (O dobro do espaço de banco de dados).
-
Outra coisa.
(estou usando MFC & LinqToSQL).
Solução
Gostaria de armazená-lo no banco de dados como Wiki, em seguida, mantenha a saída HTML transformado na memória em um cache no servidor web. Qualquer que seja a tecnologia de web que você está usando, todos devem apoiar isso -. Uma tupla básico (hashtable) digitado na url, ou id, ou similar
Outras dicas
eu iria armazenar a marcação e tornar html lado do servidor em tempo real. Você pode usar o cache do lado do servidor para reduzir a quantidade de computação real que você executar e você começa a manter uma representação que tem semântica razoáveis ??e pode ser processado para text / html / pdf, se necessário.
A maneira mais fácil seria a loja de marcação e tornar o HTML sob demanda em um cache (disponível no disco ou em onjects memcached) com o timestamp de render. Dessa forma, você pode verificar se você precisa para tornar novamente porque a marcação mudou ou apenas servir o HTML em cache. Essa é a maneira que a maioria Ruby on Rails apps / CMS trabalho.
Gostaria de armazená-lo no banco de dados como RST marcação, e transformar a HTML conforme necessário. Desde que você está provavelmente usando um front-end (por exemplo, JSP, PHP, Django ou qualquer outra coisa que torna uma linguagem de template) o processamento adicional para RST não vai apresentar muito em cima.
Na verdade medir a sobrecarga real de tornar a marcação em HTML antes de decidir implementar um mecanismo de cache complexa.
A "(Menos espaço de banco de dados, mas mais o uso da CPU)" não é um fato medido, é uma suposição de que pode vir a ser não é verdade.