3

メイン カテゴリ ページの UrlRewrite を実行しています。変換:

www.mysite.com/Category.aspx?id=2 

www.mysite.com/Dogs

そうするために、次のコード (疑似コード) を実行する を使用して Global.asaxApplication_BeginRequestます。

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    if (IsCategoryUrl())
    {
        string CategoryName = ParseCategoryNameFromUrl(Request.Url);
        string CategoryId = GetCategoryIdByNameFromDB( CategoryName );
        Context.RewritePath("/Category.aspx?id=" + CategoryId);
    }
}

私の質問は次のとおりです。

  1. これは URL 書き換えを実行する正しい方法ですか? (そうするのは初めてです)。
  2. このコードは、ほぼすべてのリクエストで DB からの読み取りを引き起こします。キャッシュする方法はありますか? 私が見つけた SQL キャッシング用の唯一のテクニックは、 では<%@ Page %>不可能な指令を必要としましたglobal.asax。他の解決策はありますか?

前もって感謝します。

4

1 に答える 1

2

データベース クエリをキャッシュすることに問題はありません。すべてのカテゴリ名について、一定期間後に有効期限が切れる例として、ID をディクショナリに保存できます。この場合、これにより DB 呼び出しが削除されます。例として:

Dictionary<string, int> categoryIdLookup;

これは HTTP キャッシュに保存して取得できます。null の場合 (つまり、追加されていないか、キャッシュから削除された場合)、辞書を作成し、正しい Id を検索してから、書き換えを行います。

于 2009-02-01T12:17:50.013 に答える