0

WebMatrix Razor ASP.Net サイトに、1 行のコードを追加したページがいくつかあります。

    Response.OutputCache(600); 

それについて読んだことから、これは、IIS がページによって生成された html のキャッシュを作成し、その html を次の 10 分間提供し、次の要求が入った 10 分後にコードを再度実行することを意味すると思いました。 .

現在、時間指定された jquery 呼び出しの一部としてページがフェッチされています。クライアントのタイム コードは毎分実行されます。そこにあるコードは非常に単純です。

        function wknTimer4() {
        $.get('PerfPanel', function(data) {
        $('#perfPanel').html(data);

        });

キャッシュしているように見えることもありますが、10 分間に実行されたデータベース クエリの数を見ると、100 をはるかに超えるデータベース クエリが存在する可能性があります。キャッシュが期待どおりに機能していないことはわかっています。キャッシュは単一のセッションでのみ機能しますか? 他に制限はありますか?

更新: jQuery 呼び出しを介してページをフェッチするか、直接の html を介してページをフェッチするかに関係なく、クライアントが何をするかは問題ではありません。サーバーがキャッシュしている場合、クライアントが何をするかは問題ではありません。

更新 2: ここにダンプされた完全なコード。退屈なもの:

@{  

    var db = Database.Open("LOS"); 
    var selectQueryString = "SELECT * FROM LXD_funding ORDER BY LXDOrder"; 
    // cache the results of this page for 600 seconds
    Response.OutputCache(600); 


 }



@foreach (var row in db.Query(selectQueryString) ){

    <h1>
    <a href="Dashboard/FundingDetails/@row.Status">@row.quotes</a>  Loans @row.NALStatus, oldest     @(NALWorkTime.WorkDays(row.StatusChange,DateTime.Now)) days

    </h1>

}
4

1 に答える 1

1

OutputCache がどのように機能するかについてのあなたの仮定は正しいです。firebug または chrome ツールをチェックして、ページにヒットする送信リクエストを確認できますか? jQuery を使用している場合、$.get または $.ajax のキャッシュ プロパティを false に設定することがあります。これにより、ページへのリクエストの末尾にファンキーなクエリ文字列が含まれます。jQueryとIEのいくつかの問題を修正するために、これをグローバルに設定するという間違いを犯しました:

http://api.jquery.com/jQuery.ajaxSetup/

ここで注目すべきもう 1 つの点は、DB 呼び出しのグループ化です。1 つの要求で多くの呼び出しを行っているだけですか? 別のリーダー内で、ループ内で db コマンドを実行していますか? この場合のコードは役に立ちます。

頑張ってください、これが役立つことを願っています!

于 2013-02-12T21:48:31.970 に答える