2012-05-04 21 views
14

Markdownは、HTMLよりも書きやすく編集が簡単です。私が見たすべてのHTMLエディタは、1トンの不要な迷惑メールを出力します。マークダウンはよりきれいだ。保存されているMarkdownをHTMLに変換する必要がありますか、HTMLを保存するだけですか?

私がやっていることは次のとおりです。マークダウンをデータベースに保存し、PHP MarkdownでHTMLに変換してから、ウェブブラウザに出力します。

1つの問題は、ページが要求されるたびににする必要があるということです。これはやや高価なようです。

これは良い考えですか?またはこれを行うより効率的な方法がありますか?

答えて

28

実際の例として、Stack OverflowはMarkdownをサポートしていますが、の両方を MarkdownとレンダリングされたHTMLをデータベースに格納します。レンダリングされたHTMLは常に同じであるため、ページを提供する方がずっと速くなります。投稿は、ユーザーに表示されるよりもはるかに少ない頻度で作成されます。

+0

これはまさに私が考えていたものです。マークダウンを保存する場合は、各ページの読み込み時に解析する必要があります。 htmlを解析して保存すると、ページの読み込みが高速になりますが、編集するのはほとんど不可能になります。両方を保存すると(ビットが安い)、両方の世界のベストが可能になります。 –

+1

また、変換されたHTMLをキャッシュし、ヒットをDBに限定し、それを格納する必要性を制限することもできます。もちろんあなたのアプリケーションに依存します:) – neolaser

1

両方を保存することができます。保存されたマークダウンは、複数回編集する必要がある場合や、MarkdownからHTMLへの別の翻訳が開発された場合に便利です。あなたが言うように、格納されたHTMLは、それを何度も再生成するのを避けるために便利です。

7

あなたのサイトから立ち直り、本当に "高価な"ものであると自問してください。 1日に1,000以上のユニークを提供していますか?現実的には、それは風船になるだろうか?これらの種類の質問では、答えは明確ではありません。たとえば、国際的な銀行向けのWebサイトを構築していたときに、最小化されていないCSSドキュメントで1日あたり1ギガバイトの帯域幅が追加される可能性があります。しかし、ポートフォリオサイトを構築するときに、そのトラフィックの一部を期待しています。

私は確かに非効率的なコードの構築を主張していません....単に "コスト"は実際にはプロセスの実行として測定されるべきであることに留意してください。

もしあなたが本当に心配しているのであれば、PHP Markdownプロセスの実行前後に記録することができます。次に、サーバーの負荷をA/B方式で一定期間トラッキングします。数字は嘘ではない。

+0

申し訳ありませんが、もしそれが馬鹿に聞こえたら...何を記録しますか?帯域幅?前と後のディスクスペース? – xameeramir

+1

@BountyMan、コーディングの一般的なプラクティスは、操作の前後にタイムスタンプをエコー(またはログ)することです。そうすれば、特定の関数をどれぐらいの期間完了する必要があるかを知ることができます。 UI開発では、通常、そのステップをスキップしてブラウザの診断ツールを使用することができますが、PHPのようなバックエンド言語では、2つのタイムスタンプを投げてそこから作業するのが最も簡単だったようです。 – bpeterson76

0

私は最近あなたが求めているものと非常に似たプロジェクトを完了しました。本格的なHTMLをデータベースに保存するのではなく、マークアップされたhtmlをMongoDBのような独自のAPIを使ってファイルシステムに保存することを選択しました。マークダウンを保存することの美しさは、ファイルシステムのフットプリントがはるかに小さいことです。生のマークダウンを見る必要がある場合は、読みやすくなります。ユーザーがhtmlを編集すると、私は元気でレンダリングされ、どのように見えるかを見ることができます。

私はそれにはまったく同意しない、両方を保存するための他の提案がありました。すべてのリクエストに対してマークダウンされたバージョンをマークアップする必要がないため、パフォーマンスを向上させたい場合は、編集するたびに本格的なバージョンをキャッシュすることを検討します。ディスクスペースおよび/またはデータベース操作でペナルティを支払うにつれて、マークダウンとフルブローイングの両方を保存することは、マークダウンの目的を破ります。

関連する問題