1

ちょっと変わった質問があると思います。私は、ユーザーが正規表現として記述されたパスを指定できるプロジェクト(PHP / MySQL)に取り組んでおり、サイトはそれに基づいてコンテンツをロードします。たとえば、誰かがこの正規表現を提供するとします。

articles\/([0-9]+)$

誰かがhttp://example.com/articles/3にアクセスすると、その特定のページにそのコンテンツとそれに関連付けられた設定が読み込まれます。これらのパスはすべてMySQLデータベースに保存されます。ユーザーがサイトにアクセスすると、正規表現のデータベースに対してURLをチェックし、表示する適切なコンテンツを見つけます。

これが私の問題です。ユーザーは任意の数の正規表現パスを他の任意の数のページに関連付けることができ、それらは他の正規表現と非常によく似ている可能性があります。私の当面の考えは、URLの先頭(もちろんexample.com/の後)に基づいて検索を絞り込み、完全に一致するものが見つかるまですべてのオプションを確認することです。ただし、最悪の場合、完全に一致するものを見つける前に、それ以上ではないにしても数十のオプションを調べる可能性があるため、心配しています...そしてそれは貴重なリソースを浪費することになります。

システムを改善する方法について誰かが考えていますか?

前もって感謝します。

4

2 に答える 2

0

私の唯一の提案は、一致の結果を別の mysql テーブルにキャッシュすることです。インデックスが作成されているため検索が高速になり、一致するものが見つからない場合は、正規表現を調べて適用します。正規表現が削除または更新された場合は、その正規表現に関連付けられたキャッシュを忘れずに削除してください。

于 2012-06-14T02:50:11.437 に答える
0

その正規表現の一致数がテーブルの主キーである場合、Web サイトに 100 万件未満の記事があると仮定すると、パフォーマンスは問題にならないはずです (数分の 1 秒かかるはずです)。

また、キャッシングを使用してパフォーマンスを向上させます。

于 2012-06-14T02:49:48.950 に答える