2009-09-01 6 views
2

レガシーシステムから新しいシステムへの移行プロジェクトがあります。新しいシステムへの移行により、移行されるオブジェクトに固有の新しいIDが作成されます。ただし、ユーザーと検索インデックスには古いIDのURLが含まれます。私はこれを処理するためにApacheのリダイレクトやリライトを設定したいと思いますが、その多数のオブジェクトでパフォーマンスが懸念されています(私は新しいIDマッピングに500Kの古いIDを近似することを期待しています)。Apache Redirects/Rewrite Maximum

誰もがこのスケールでこれを実装しましたか?または、Apacheがこの大きなリダイレクトマッピングに対応できるかどうかを知ることができますか?

答えて

1

少数のルールを使用して書き換えをフレーズできますか?古いURLを新しいURLにリンクするパターンはありますか?

もしそうでなければ、私はApacheに500K以上のリライトマッピングを心配しています。それでも、あなたを驚かせるかもしれません。

リダイレクトを処理するためだけにデータベースにバックアップされたアプリケーションを作成する必要があるように思えます。マッピング自体がデータベースに格納されています。それははるかに良いスケールになります。

2

あなたはマッピングの固定セットを持っている場合は、あなたがタイプ ハッシュファイル試みのmod_rewrite rewrite mapを与える必要があります。

2

私は最近非常に同じ質問をしました。実用的な答えが見つからないので、私たちはhtaccess 6ルールを実装しました。そのうちの3つは20万の条件を持っていました。
これは、150 MBのサイズを持つhtaccessファイルを意味します。ページの読み込み時間が秒であったにもかかわらず、この特定のWebサイトを使用していなかったのは半日ほどでした。しかし、翌日、私たちのサーバー全体が400以上の負荷で叩かれました。(マシンは8コア、16GB RAM、SAS RAID5なので、通常はリソースに問題はありません)

このようなものを実装する必要がある場合は、 。ルールは条件を必要としないように設計し、dbmリライトマップに入れます。これは私たちのパフォーマンスの問題を簡単に解決しました。

http://httpd.apache.org/docs/current/rewrite/rewritemap.html#dbm

1

私は、これは古いトピックです見ていますが、すべての解決策を見つけましたか?

デベロッパーがhtaccessを使用してRedirectMatchを使用して.htaccessファイルの30,000を超えるURLをリダイレクトする場合があります。

私は、このファイルのサイズを考慮して、パフォーマンスと管理エラーが心配です。

私がお勧めすることは、古いURLの全て以来持っていることです。

/sub/#### 

彼らはデータベースにこれを移動してのすべての要求のリダイレクト

/sub/index.php 

を作成すること:

www.domain.com/sub/###

~

www.domain.com/sub/index.php

次にインデックスを持つ。PHPはリダイレクトを送信します。これは新しいURLと古いIDがデータベース内で参照できるためです。

このようにして、古いURLのHTTP要求だけが、すべての単一のHTTP要求ではなく、書き換えプロセスを実行します。