マイクロソフト以外のさまざまなテクノロジを使用して作成された古い Web サイトを書き直しています。新しいサイトは asp.net Web フォームです。
データベース内に古い URL のリストがあり、要求されたページの URL をデータベース内のその URL のリストと照合して検査し、コンテンツの新しい URL への適切な 301 リダイレクトを実行するルーチンがあります。
効率の観点から私が持っている質問は、要求された URL が本質的に 404/見つからない場合にのみ、この古い URL ルックアップを実行するにはどうすればよいかということです。ほとんどの場合、要求されたページは301 リダイレクトを必要としない有効な新しい .net ページ。したがって、基本的に 404 エラーをスローしようとしている場合にのみ、ルーチンを起動できるようにしたいと考えています。
古いサイト URL の Db をチェックする私のルーチンはキャッシュされているため、少なくとも毎回データベースにヒットするわけではありませんが、このルーチンを呼び出すことさえ防止したいと思います (キャッシュの有効期限が切れたときに DB にヒットすることもあります)。必要がないとき。
おそらくglobal.asaxのApplication_Errorルーチン内から古いURLルックアップを実行し、404ステータスのエラーコードをチェックして、そのシナリオで古いURLルックアップを実行できると考えていましたが、テストすると、 global.asax の Application_Error ルーチンでブレークポイントにヒットしている - 代わりに、ブラウザーは IIS 7 404 Not Found エラーを表示しています。
ブラウザーが新しい URL に対して 301 応答を受信し、誤った 404 応答コードを取得しないことが不可欠です (要求された URL が新しいフレーバー URL でも古いフレーバー URL でもない場合を除きます)。
この状況を処理するための効率的なアプローチを推奨できる人はいますか?