2011-02-22 12 views
0

私のコードではドロップダウン選択があり、ドロップダウンから選択するとコードはさらに処理を行いレポート/データを生成します。はC#コーディング(効率)の提案が必要です

さらに、全体のプログラムは、3種類の操作だから、

Operation1: processing a text files of size of size > 6MB 

Operation2: SQL Query to a DB (Query takes around 1 minute) 

Operation 3: HTTP POST request to server (The main costliest part of the programe) 

から収集されたデータに依存し、私は一度だけこの操作を実行し、すべての異なる選択のためのデータを使用するように考えています、それは効率的にするためにドロップダウンから。

質問どのように私は以下のように行うことができますされていますたびにページが操作をロードするため

  1. 私は「をPage_Load」イベントでそれを置くことはできませんが「私はできる

  2. をさせていただきますそれは#1と同じになるので、 "dropdownlist_selectedindexchanged"イベントの中に入れてください。

  3. これは結構です


void Page_Load(object sender, EventArgs e) 
{ 
    if(!ispostback) 
    { 
     Operation1(); 
     Operation2(); 
     Operation3(); 
    } 
} 

以下のように私は "をPage_Load" でそれをやって考えます。操作は一度しか実行されず、データは一貫して使用できますが、操作に時間がかかるため、ページのロードに時間がかかります。

私が欲しいものを達成できる方法は他にありますか?私にお知らせください。

おかげで、 ラーフル

答えて

1

データセットが変更されない場合、あなたはおそらくApplication_Start()に一度それを行うために管理することができます。

編集 - このような何か(メモリから入力すると、離れVSから、私はVBを行う):

Protected void page_load(object sender, eventargs e) 
{ 
    // the name can be anything 
    if (!System.Web.HttpContext.Current.Session["data_cache_filled"]) 
    { 
     // code to fill the cache. 
     // ... 

     //mark it as filled 
     System.Web.HttpContext.Current.Session["data_cache_filled"] = "yes"; 
    } 

} 
+0

@Rodrigoを、私は間違っているが、私はのApplication_Start(にそれを置くことだと思うなら、私を修正)全体aplicationに影響することを意味し分(そうだとしたら)、アプリケーションは読み込むのに3分かかります。ありがとう – Rahul

+0

はい、開始するには3分かかります。一度_してください。もちろん、結果をキャッシュするので、再度ロードする必要はありません(HttpApplicationごとに1回のみ)。 –

+0

@Rodrigo、ご返信いただきありがとうございます。これは素晴らしいです...私が探していたもののようですが、私にも不利な点があります... MSDNのリンクhttp://msdn.microsoft.com/en-us /library/ms178473.aspx私は、 "Application_Start()"は、最初のリソースがサーバーから要求されたときに一度しか起動しないことに気付きました。 ..この操作は無駄に実行されます(私のページは、私がそれを差し込んでいるウェブアプリ全体の一部です)。 – Rahul

1

キャッシュそれ。あなたができるCacheHelperクラスfrom here、使用:3つの操作を行うことが3を取る場合...

internal List<Employee> Operation1() 
{ 
    List<Employee> employeeData; 

    if (!CacheHelper.Get("employeeData", out employeeData)) 
    { 
    employeeData = (from x in db.Employees select x).ToList(); // or whatever 

    CacheHelper.Add(employeeData, "employeeData"); 
    } 

    return employeeData; 
} 
関連する問題