2010-07-28 15 views
8

Ho un obbligo per gli utenti di creare, modificare ed eliminare i propri articoli. Ho intenzione di usare l'editor WMD che SO usa per creare gli articoli.Markdown o HTML

Da quello che posso raccogliere SO memorizza il markdown e l'HTML. Perché lo fa: qual è il vantaggio?

Non riesco a decidere se memorizzare markdown, HTML o entrambi. Se memorizzo sia quello che richiamo e che converto per visualizzarlo all'utente.

UPDATE:

Ok, penso che dalle risposte finora, dovrei essere la memorizzazione sia il mark-down e HTML. Sembra bello. Ho anche letto un post sul blog di Jeff riguardante gli exploit XSS. Poiché l'editor WMD ti consente di inserire qualsiasi codice HTML, ciò potrebbe causare dei grattacapi.

Il post di blog in questione è here. Suppongo che dovrò seguire lo stesso approccio di SO - e disinfettare l'input sul lato server.

Il codice di sanitizzazione che SO utilizza disponibile come Open Source o dovrò iniziare da zero?

Qualsiasi aiuto sarebbe molto apprezzato.

Grazie

risposta

8

La memorizzazione di entrambi è estremamente utile/utile in termini di prestazioni e compatibilità (e infine anche controllo sociale).

Se si memorizza solo Markdown (o qualsiasi altro markup non HTML), c'è un costo in termini di prestazioni analizzandolo ogni volta in HTML. Questo non è sempre notevolmente economico.

Se si memorizza solo HTML, si rischia che i bug si insinuino silenziosamente nell'HTML generato. Ciò comporterebbe un sacco di problemi di manutenzione e di bugfixing. Perderai anche il controllo sociale perché non sai più cosa sia l'utente in realtà compilato. Ad esempio, ad esempio un amministratore desidera sapere quali utenti stanno tentando di eseguire XSS utilizzando <script> e così via. Inoltre, l'utente finale non sarà in grado di modificare i dati nel formato Markdown. Dovresti convertirlo di nuovo da HTML.

Per aggiornare l'HTML a ogni modifica della versione di Markdown, è sufficiente aggiungere un campo aggiuntivo che rappresenta la versione di Markdown utilizzata per generare l'output HTML. Ogni volta che questo è stato modificato sul lato server nel momento in cui recuperi la riga, ri-analizza i dati utilizzando la nuova versione e aggiorna la riga nel DB. Questo è solo un costo aggiuntivo una tantum.

+1

Un altro rischio di archiviare solo HTML è se è necessario modificare non è necessario fare affidamento su una conversione 1-a-1 da HTML a markdown – neolaser

+0

@neo: * "Inoltre, l'utente finale non sarà in grado per modificare i dati nel formato Markdown. Dovresti convertirli di nuovo da HTML. "* – BalusC

6

memorizzando sia voi hanno solo per elaborare il Markdown una volta (quando viene pubblicato). Dovresti quindi recuperare l'HTML in modo che tu possa caricare le tue pagine più velocemente.

0

Se ne è stata memorizzata solo una, è necessario ricreare l'altra per la vista di visualizzazione o la vista di modifica.

Problemi correlati