2009-01-29 76 views
18

我將在我正在開發的一個項目中實現一個輕量級格式化語言(可能是Textile,也許是Markdown),我很好奇如何最好地將它存儲在數據庫中。如何在數據庫中存儲輕量級格式(Textile,Markdown)?

如果用戶能夠編輯他們發佈的內容,那麼對我來說,原始的非轉換標記是存儲的,這樣用戶下次不必編輯HTML。但是由於內容將被顯示的不僅僅是編輯內容,所以存儲內容的轉換副本也是有意義的,以便原稿不必在每個頁面視圖中通過Textile發送。

因此,在數據庫中並行存儲原始內容和轉換後的內容是否是常見的做法?有沒有更好的辦法?

謝謝!

回答

25

商店降價:

  • 每個視圖=轉換
  • 每個編輯=沒有處理

商店html

  • 每個視圖=沒有處理
  • 每個編輯=轉化爲降價和背部

商店都

  • 每個視圖=沒有處理
  • 每個編輯=轉換編輯
  • 後的HTML

您必須權衡您的處理成本與您的存儲成本。

1

您應該定義存儲原始Textile/Markdown標記,並使用標準HTTP緩存內容(Last-modified,Expires-At,ETag)來緩存呈現的頁面或緩存處理標記的結果。

1

我目前正在使用Markdown與PHP。我將markdown-source存儲在數據庫中,並根據請求顯示轉換後的版本。我沒有任何性能問題,並且對此設置非常滿意。

1

我所看到的確實是將編譯的HTML存儲在數據庫的一個單獨的行中。只需要一行「內容」和另一個「content_html」,並將編譯的HTML保存在「content_html」行中。

(當然,你有某種保存方法,你可以重寫做到這一點的?)