1

ASP.MVC (1.0) プロジェクトでは、RSS フィードから天気情報を取得して表示することができました。私が抱えている問題はパフォーマンスです:

Site.Master ファイルに RenderAction() メソッドを配置しました (これは完全に機能します) が、ユーザーがメニュー ポイント 1 をクリックし、メニュー ポイント 2 を数秒後にクリックした場合の動作が心配です。メニュー ポイント 3, .... このようにして、新しい情報を何度も何度も要求する RSS フィードを作成します。

これはどうにか回避できないでしょうか?(どうにかしてこの情報を 1 回だけ読み込むには?)

前もって感謝します!

4

2 に答える 2

2

サーバーキャッシュを使用できます:

public ActionResult Index()
{
    // try getting the weather from the cache
    object weather = HttpContext.Cache.Get("weather");

    if (weather == null)
    {
        // weather not cached => fetch it from RSS
        weather = Repository.FetchWeather();

        // store in cache for the 5 next hours
        HttpContext.Cache.Add(
            "weather", 
            weather, 
            null, 
            DateTime.Now.AddHours(5), 
            Cache.NoSlidingExpiration, 
            CacheItemPriority.Normal, 
            null
        );
    }
    return View(weather);
}
于 2010-05-19T06:33:05.910 に答える
1

このアプリを書いていたら、天気の詳細をダウンロードして、ローカルの db または xml ファイルに保存し、そこから読み取ると思います。

あなたが天気チャンネルか何かでない限り、天気は1分ごとの更新が必要なほど変化しません。

または、これをスレッドとして記述し、ロードが完了したときに報告することもできます。VS 2010 では、これは簡単なことです。

したがって、これを解決するには、リクエストをキャンセルする機能をコードに付与し、これをシングル スレッド アプリケーションとして実行できないようにする必要があります。スレッドでリクエストを開始し、別のリクエストでそれをキャンセルする機能が必要になります。

それに直面して、私はそれをローカルでホストし、RSS フィードからデータを更新するプロセスを 1 時間ごとに実行します。

于 2010-05-18T23:00:51.963 に答える