2017-12-19 35 views
-1

私はデータベースにBBCodeまたはHTMLを格納することについての質問を見つけましたが、両方を保存するのはどうですか?たとえば、 & body_htmlの2つの列を持つposts DBテーブルを作成します。BBCodeとHTMLバージョンの両方をデータベースに保存しますか?

body_bbcodeユーザー(フォーラムメンバー)が投稿した元の投稿を保存し、body_htmlにその投稿の解析済み(HTML)バージョンを保存します。

だから、私はbody_htmlを使用するフォーラムの投稿を表示するが、(引用付きで返信)引用&を編集するために、私はbody_bbcodeを使用します。パーサは正規表現を使用しているとbody_htmlせず、それは、トピックページあたり少なくともフォーラムの投稿を変換する必要がありますので、私はこれをしたい理由

理由があります。私が間違っている場合は私を修正しますが、それはパフォーマンスの問題を引き起こす可能性がありますか?

一方、私はこのような人はいませんでしたので、このアプローチの欠点は何ですか、データベースでさらにスペースを取っているのでしょうか?

また、私は、検索目的でプレーンテキスト版を保存する新しい列を追加することを考えており、タグ自体は検索されません(たとえば、body_text)。

+1

なぜ実際のHTMLをDBに保存する必要がありますか?実際のHTMLはすべてのフォーラムメンバーの間で静的です。あなたはちょうど 'ポスト'または 'テキスト'を格納し、BBCの権利を解析する必要がありますか? – Tony

+0

@Tonyそれは説明されていますが、あなたは明らかに読んでいませんでした: 'パーサーがregexを使用してbody_htmlを使用していないため、トピックごとに少なくとも15のフォーラム投稿を変換する必要があるためです。もし私が間違っていると訂正しても、それはパフォーマンスの問題を引き起こす可能性がありますか? ' – PeraMika

+2

*私が間違っていると私を訂正しますが、それはパフォーマンスの問題を引き起こす可能性があります?これをテストして実際の問題を測定しましたか?これらのパフォーマンスの問題は、同じデータを複数の場所に格納するという複雑さを増すだけの価値がありますか?生のバッキングデータを保存し、そのデータに対して計算/置換を実行する方が好きです。複雑さのためにパフォーマンスを交換するケースは確かですが、そうする前にパフォーマンスを確実に測定する必要があります。 – David

答えて

0

私がこれをやりたい理由は、パーサが正規表現を使用していてbody_htmlを使用していないためです。トピックページごとに少なくとも15のフォーラム投稿を変換する必要があるからです。私が間違っている場合は私を修正しますが、それはパフォーマンスの問題を引き起こす可能性がありますか?

よく設計されたbbcode正規表現は、意味のある方法でパフォーマンスを妨げません。

bbcodeテキストとhtmlテキストに "duplicate"列を作成しないでください。

あなたが提案した方法で実行する大きな問題は、必然的にあなたのhtmlコードを変更することです。 (たとえば、HTMLリンクにクラスを追加し、YouTubeの埋め込みコードのiframeディメンションを変更するなど)次に、問題のあるhtml列のデータを更新しようとしています。

関連する問題