2

すべてのページ呼び出しをインデックス ページにルーティングし、SEO に適した URL を持つ要求ハンドラーに取り組んでいます。

domain.com/account/settings

これを正しいページにマップするのは簡単ですが、URI に ID 番号またはページ番号があると、より複雑になるものもあります。

したがって、一部の人々は preg_match のようなものを使用し、パターンの配列を循環します -> uri を使用して、ページングと id が機能する場合に適した一致を取得しますが、私の経験から言うと、言う配列で preg_match を実行するようですページの読み込みごとに 20 項目が表示されるのは、パフォーマンスに適していません。

これについてのあなたの考えを教えてください。

4

4 に答える 4

2

これがあなたが見るべきものです:これが悪いように見えるということではなく、より良い代替手段は何ですか。より良いと思われる代替案があれば、彼らはそれを使用します。そうでない場合は、高速化する必要があることがわかるまで、正規表現ソリューションを使用してください (時期尚早の最適化に関するいつもの暴言は省きます)。

個人的には正規表現ハンドラーを使用します。それらは、この問題に対する他のいくつかの代替手段よりも柔軟で、簡単で、保守も容易です。しかし、YMMV...

于 2011-01-23T03:24:11.793 に答える
2

URI と同じくらい短い文字列のそれほど複雑ではない正規表現は、20 回実行してもほとんど時間がかかりません。a) パフォーマンスの問題であることを証明するためにプロファイリングまたは時間測定を行い、b) 代わりに使用する適切な代替手段がある場合は、変更を試みることができますが、それ以外の場合はあまり心配しません。結局、大量のサイトが mod_rewrite で似たようなことを行っており、ページを読み込むたびに一連の正規表現に対してページ URI をチェックしています。

必要に応じて、URI の基本的な形式 (id が含まれているかどうか、ページ番号が含まれているかどうかなど) を確認するためのいくつかの単純な strstr() チェックを使用して、おそらく各 URI の 20 倍以下に減らすことができます。 . ^可能な限り「開始」と「終了」$のメタ文字を使用するなど、正規表現を最適化することも役立ちます。

于 2011-01-23T03:42:36.637 に答える
0

したがって、一部の人々は preg_match のようなものを使用し、パターンの配列を循環させます -> uri

そのようなアプローチはOKだと思います。たとえば、Drupal と Django フレームワークはまさに​​それを行います。

もう 1 つの方法は、URL 書き換えエンジンを使用することです (詳細については、たとえば、この質問を参照してください)。

于 2011-01-23T03:28:22.227 に答える
0

のサイトでは、いくつかの異なる書き換えルールがあり、うまく機能すると思います。

RewriteRule ^(main|home|daily_photo_mockup|games|sporktris(?:_web)?|nangooni|contact|source|admin|edit_photos?|edit_galleries|edit_gallery)(?:_(fr|sv))?$ index.pl?page=$1&lang=$2
RewriteRule ^(snow_flakes|photography)(\d+)?(?:_p(\d+))?(?:_(fr|sv))?$ index.pl?page=$1&subpage=$2&img=$3&lang=$4
于 2011-01-23T03:23:21.443 に答える