2010-07-28 3 views
8

Ich habe eine Anforderung für Benutzer, ihre eigenen Artikel zu erstellen, zu ändern und zu löschen. Ich habe vor, den WMD-Editor zu verwenden, mit dem SO die Artikel erstellt.Markdown oder HTML

Von dem, was ich sammeln kann SO speichert die Abschriften und das HTML. Warum tut es das - was ist der Vorteil?

Ich kann nicht entscheiden, ob die Abschrift, HTML oder beides zu speichern. Wenn ich beides speichere, was ich abrufe und konvertiere, um es dem Benutzer anzuzeigen.

UPDATE:

Ok, ich denke, aus den Antworten bisher, soll ich sowohl den Abschlag und HTML speichern werden. Das scheint cool. Ich habe auch einen Blogpost von Jeff über XSS-Exploits gelesen. Da der WMD-Editor die Eingabe von HTML-Dateien ermöglicht, könnte dies mir Kopfschmerzen bereiten.

Der betreffende Blogpost ist here. Ich vermute, dass ich den gleichen Weg wie SO gehen muss - und die Eingabe auf der Serverseite sanieren muss.

Ist der Desinfektionscode, den SO verwendet, als Open Source verfügbar oder muss ich das von Grund auf neu starten?

Jede Hilfe würde sehr geschätzt werden.

Dank

Antwort

8

Das Speichern von beiden ist sehr nützlich/hilfreich in Bezug auf Leistung und Kompatibilität (und schließlich auch soziale Kontrolle).

Wenn Sie nur Markdown (oder was auch immer Nicht-HTML-Markup) speichern, dann gibt es einen Leistungsaufwand, indem Sie es in HTML-Geschmack jedes Mal analysieren. Dies ist nicht immer spürbar billig.

Wenn Sie nur HTML speichern, riskieren Sie, dass sich Fehler im generierten HTML-Code einschleichen. Dies würde zu vielen Wartungs- und Bugfixing-Kopfschmerzen führen. Sie werden auch soziale Kontrolle verlieren, weil Sie nicht mehr wissen, was der Benutzer eigentlich ausgefüllt hat. Sie würden zum Beispiel als ein Administrator auch gerne wissen, welche Benutzer versuchen, XSS mit <script> und so weiter zu tun. Außerdem kann der Endbenutzer die Daten nicht im Markdown-Format bearbeiten. Sie müssten es von HTML zurück konvertieren.

Um den HTML-Code bei jeder Änderung der Markdown-Version zu aktualisieren, fügen Sie einfach ein zusätzliches Feld hinzu, das die Markdown-Version darstellt, die zum Generieren der HTML-Ausgabe verwendet wird. Wenn dies beim Abrufen der Zeile auf der Serverseite geändert wurde, müssen Sie die Daten mit der neuen Version erneut analysieren und die Zeile im DB aktualisieren. Dies ist nur ein einmaliger Aufpreis.

+1

Ein weiteres Risiko, nur HTML zu speichern, besteht darin, dass Sie nicht auf eine 1-zu-1-Konvertierung von HTML zurück zum Markdown angewiesen sind. – neolaser

+0

@neo: * "Auch der Endbenutzer wird nicht in der Lage sein um die Daten im Markdown-Format zu bearbeiten. Sie müssten es zurück von HTML konvertieren. "* – BalusC

6

Durch das Speichern sowohl Sie haben nur einmal den Abschlag zu verarbeiten (wenn es geschrieben wird). Sie würden dann den HTML-Code abrufen, damit Sie Ihre Seiten schneller laden können.

0

Wenn Sie nur einen speichern, müssen Sie den anderen entweder für die Anzeigeansicht oder die Bearbeitungsansicht immer neu erstellen.