2012-03-15 16 views
1

私はカスタムのブログページを持っています。ページの右側には、最も人気のあるブログを示す「パネル」と、最後にブログに最も多く投票した人々週3つの他のものがあります。これらのパネルはすべて重いSQLです。彼らはロードに数秒かかります。ここ ポストバック時にキャッシュされたコントロールが実行されないようにする

はラフレイアウトの概要です:彼らはそれほど頻繁に、すべてを変更するためにバインドされていないので、私はWebBrowserコントロールにそれらのすべてを分離しました Balsamiq

で作成 enter image description here

モックアップ(た.ascx global.asaxに私は私のカスタムキャッシュ変数を一致させるためにこれを持って

<%@ OutputCache Duration="7200" VaryByParam="*" VaryByCustom="CacheByModule" %> 

そして:)と彼らはすべての出力キャッシュを持っています:私が最初に私のページを実行すると

public override string GetVaryByCustomString(HttpContext context, string custom) 
    { 
    switch (custom.ToLower()) 
    { 
     case "cachebymodule": 
      Request.Url.PathAndQuery.Split('/')[0]; 
      break; 
    } 

      return base.GetVaryByCustomString(context, custom); 
    } 

私は基本的にすべての..

を私のウェブサイト、ブログ、投票、調査、クイズ、などのさまざまな部分のために同じことをやっていますそれらは実行されている - 期待されている。 次の実行時には実行されません。

これは毎回発生します。私は投稿バックイベントであるブログに対してコメントや返信を行い、コメントセクションにajax更新パネルを使用しています。私の右サイドパネルはすべて実行中です!

どうすればよいですか?私がアプリケーションをデバッグすると、その中のブレークポイントが応答と削除(ポストバックイベント)のためにヒットしています。 SQLプロファイラは、確認の2倍の数だけ表示されます。

これは予期された動作ですか?それらをキャッシュする全体のポイントは決して実行されないためです。しかし、すべての返信と削除でそれらは実行されています。それらが実行されない時間は、新しいページの読み込み(およびキャッシュの制限時間内)です

なぜ、ポストバックで実行されているのですか? どうすればいいですか? URL +のparamsは、PageLoad /ポストバックのために同じではありませんので、

おかげ

答えて

2

それが実行される理由は、したがって、出力キャッシュは動作しません。
URLが変更されたときにリセットされないように、OutputCache VaryByParam="None"を設定してください。

<%@ OutputCache Duration="7200" VaryByParam="None" VaryByCustom="CacheByModule" %> 

CacheByModuleが実行していることに応じて、これはうまくいくはずです。

+0

ああ、さて、これを試してみて、ちょっと戻ってくるよ、ありがとう – LocustHorde

+0

ああ!!!!それだった!私はどれほど幸せであるか、おかげさまではありません。 – LocustHorde

+2

@LocustHordeあなたは非常に歓迎されています。自分自身のような問題に多くの時間を費やしています – ntziolis

関連する問題