これまで、カスタム 404 ページを使用して URL を書き換えてきました。URL はサイト内のどのファイルにもマップされず、IIS を構成して 404 エラーを aspx ページに送信し、それらの URL を正しい URL にリダイレクトしました。
ここで、リダイレクトの使用を停止する必要があるため、Scott Guthrie の Url Rewriting に関する記事を読んだ後、Global.asax で Application_BeginRequest を使用したいと考えています。問題は、多くの URL が書き換えられておらず、介入なしで適切な場所に到達できることです。すべてのリクエストが Application_BeginRequest メソッド (書き換えられていない URL であっても) を通過する必要があるのではないかと心配しており、読み込み時間が遅くなるのではないかと心配しています。
どう思いますか?Application_BeginRequest を使用する場合、読み込み時間は問題になりますか?
5 に答える
とにかく、すべてのリクエストは Application_BeginRequest を通過します。
書き換えが必要なページのみが変更されるように、いくつかのロジックを追加する必要があります。
その小さなロジックはそれほど高価ではありません。
私はそれを使用しましたが、パフォーマンスの低下にまったく気づきませんでした。
問題を抱えている可能性のある他の人へのメモです。持っていることを確認してください
<modules runAllManagedModulesForAllRequests="true">
あなたのweb.configで
より頻繁に使用し、Apache モジュール mod_rewrite を模倣する場合は、非常に堅牢なソリューションがあります。私はこれが気に入っています。
また:
http://www.managedfusion.com/products/url-rewriter/
この投稿でより多くのオプションを読むことができます:
ジョシュが言うように、重要な記事は http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspxです
その記事は少し古いです...そして現在、.NETフレームワークにはより良いアプローチがあります。面白いのは、私があなたとまったく同じことをしていたことです (エラー ハンドラを乗っ取っています)。
http://www.singingeels.com/Blogs/Nullable/2007/09/14/URL_ReWriting_The_Right_Way_Its_Easy.aspx
それがあなたが今やりたいことだと思います。ああ、そしてパフォーマンスについて... ページ時間に約 0.00001 秒追加されます。
Scott Guthrie の記事は良い記事ですが、彼が提案するように HttpModule を使用する代わりに、Global.asax を使用してこれを行うことを選択した理由が知りたいです。また、Asp.Net ページのライフサイクルは、とにかく Global.asax 内のこれらのイベントのすべてを実行します。
HttpModule イベントはすべてのリクエストを実行します。ロジックでおかしなことをしていない限り、問題はありません。Application_BeginRequest メソッドでのデータベース ルックアップでさえ、適切なキャッシュによって軽減できます。
疑わしい場合は、Traceに情報を書き込んで、ルーチンにかかる時間を正確に把握してください。最もコストのかかる操作 (データベース ルックアップ) と比較すると、時間はごくわずかであることがわかると思います。