2009-01-29 4 views
18

Ich werde eine leichte Formatierungssprache (wahrscheinlich Textile, vielleicht Markdown) in einem Projekt, an dem ich arbeite, implementieren, und ich frage mich, wie es am besten in der Datenbank gespeichert wird.Wie speichert man leichte Formatierung (Textile, Markdown) in der Datenbank?

Wenn der Benutzer den Inhalt, den er veröffentlicht, bearbeiten kann, macht es für mich Sinn, dass das ursprüngliche, nicht konvertierte Markup gespeichert wird, damit der Benutzer beim nächsten Mal HTML nicht bearbeiten muss. Da der Inhalt jedoch wesentlich mehr angezeigt wird als bearbeitet, ist es auch sinnvoll, eine konvertierte Kopie des Inhalts zu speichern, damit das Original nicht auf jeder Seitenansicht durch Textile gesendet werden muss.

So ist es üblich, den ursprünglichen und den konvertierten Inhalt nebeneinander in der Datenbank zu speichern? Gibt es einen besseren Weg?

Danke!

Antwort

25

Shop Abschlag:

  • Jede Ansicht = Umwandlung
  • Jeden edit = keine Verarbeitung

Speichern html

  • Jede Ansicht = keine Verarbeitung
  • Jeder edit = konvertieren Abschlags und

    • Jede Ansicht beide

    Shop zurück = keine Verarbeitung

  • Jeder edit = konvertieren nach bearbeiten
  • html

Sie müssen Ihre Verarbeitungskosten im Vergleich zu Ihren Speicherkosten abwägen.

1

Sie sollten das originale Textile/Markdown-Markup auf jeden Fall speichern und entweder Standard-HTTP-Caching-Dateien (Last-modified, Expires-At, ETag) verwenden, um gerenderte Seiten zwischenzuspeichern oder das Ergebnis der Verarbeitung von Markup einfach zwischenzuspeichern.

1

Ich benutze derzeit Markdown mit PHP. Ich speichere die Markdown-Quelle in der Datenbank und zeige die konvertierte Version auf Anfrage an. Ich habe keine Leistungsprobleme und bin sehr zufrieden mit diesem Setup.

1

Was ich gesehen habe, ist in der Tat das kompilierte HTML in einer separaten Zeile in der Datenbank zu speichern. Haben Sie nur eine Zeile "content" und eine andere "content_html", und speichern Sie den kompilierten HTML-Code in der Zeile "content_html".

(Sicher haben Sie irgendeine Art von Verfahren speichern, die Sie, dies zu tun außer Kraft setzen können?)