5

自動リンクとは、ページ コンテンツにインライン化された wiki リンクが、ページへのハイパーリンク (存在する場合) または作成リンク (ページが存在しない場合) に生成されるプロセスです。

私が使用しているパーサーでは、これは 2 段階のプロセスです。まず、ページ コンテンツが解析され、ソース マークアップから Wiki ページへのすべてのリンクが抽出されます。次に、最終的な HTML マークアップが生成される前に、既存のページの配列をパーサーに戻します。

このプロセスを処理する最善の方法は何ですか? 毎回ページ タイトルのインデックスを抽出するのではなく、サイト上のすべてのページのキャッシュ リストを保持する必要があるようです。それとも、各リンクを個別にチェックして、存在するかどうかを確認する方がよいでしょうか? リストがキャッシュされていない場合、これにより多くのデータベース ルックアップが発生する可能性があります。これは、何千ページもある大規模な Wiki サイトでも実行可能でしょうか?

4

6 に答える 6

2

私自身のウィキでは、すべてのリンクを (キャッシュせずに) チェックしていますが、私のウィキは社内で数人しか使用していません。このようなものをベンチマークする必要があります。

于 2008-08-18T14:23:06.903 に答える
1

私のウィキ システムでは、キャッシング システムは非常に単純です。ページが更新されると、リンクが有効であることを確認し、有効でないものには正しいフォーマット/場所を適用します。キャッシュされたページは、キャッシュ ルートに HTML ページとして保存されます。

ページの更新中に「作成されていません」とマークされたページは、ページを保持するデータベースのテーブルに挿入され、次にそれにリンクするページの csv が挿入されます。

誰かがそのページを作成すると、スキャンを開始して各リンク ページを調べ、正しいリンクとフォーマットでリンク ページを再キャッシュします。

作成されていないページを強調表示することに興味がない場合は、ページにアクセスしようとしたときにページが作成されているかどうかを確認し、作成されていない場合は作成ページにリダイレクトするチェッカーを使用できます。次に、他の記事の通常のページにリンクするだけです。

于 2008-08-22T10:52:03.063 に答える
1

私は一度これをやろうとしましたが、それは悪夢でした! 私の解決策は、SQL プロシージャの厄介なループであり、お勧めしません。

私が苦労したことの 1 つは、複数の単語からなるフレーズでどのリンクを使用するかを決めることでした。「スタック オーバーフローを使用しています」というテキストがあり、Wiki に「スタック」、「オーバーフロー」、「スタック オーバーフロー」という 3 つのページがあったとします。フレーズのどの部分がどこにリンクされるのでしょうか? それは起こります!

于 2008-10-15T08:35:44.587 に答える
0

Markdownを介してコンテンツを実行した後、Sinatra(リンクテキスト)で作成した個人的なプロジェクトでは、gsubを実行して、wikiの単語やその他のもの([[Here is my link]]など)を適切なリンクに置き換えます。ページが存在するかどうかを確認し、それに応じて作成または表示するためのリンク。

最高ではありませんが、キャッシュ/速度を考慮してこのアプリを作成しませんでした。これは、リソースの少ないシンプルなwikiです。

速度がより重要な場合は、アプリを何かでラップしてキャッシュすることができます。たとえば、sinatraはRackキャッシングでラップできます。

于 2009-02-18T15:23:49.397 に答える
0

私の考えは、タイトルをクエリして、SELECT title FROM articles各ウィキリンクがその文字列の配列にあるかどうかを確認することです。それがページにリンクしている場合は、作成ページにリンクしています。

于 2008-08-28T08:49:12.187 に答える