2

これが ASP.NET で可能かどうかはわかりませんが、ここに問題があります。Web アプリケーションのデータ リストの一部がGridViewを使用して表示されます。ただし、これらのリストの一部には大量のデータが含まれている可能性があるため、 ViewStateによってページの重量が数メガバイトの範囲に押し上げられることがあります。ページにポストバックがあるたびにこの情報についてデータベースを再クエリしたくないので、サーバー上のコントロールに与えられたデータをキャッシュして、次回アクセスする方法があるかどうか疑問に思っていましたポストバックがあります。

それで、これは可能ですか?もしそうなら、誰かがこれを行う方法に関する詳細情報の方向に私を向けることができますか? 不可能な場合、この問題を解決する方法について何か提案はありますか?

4

4 に答える 4

3

ページ以外のビューステートに別のストアを使用できます。 この記事では、それを行うためのいくつかの方法について説明します。

これの要点は、SavePageStateToPersistenceMedium と LoadPageStateFromPersistenceMedium をオーバーライドすることです。

于 2009-02-24T20:39:44.490 に答える
2

GridView で ViewState をオフにしてみてください。これは、多くの場合、機能に影響を与えることなく実行できます。GridView がデータを表示するだけで、編集、更新、削除などが許可されていない場合は、非常にうまく機能します。

http://www.pluralsight.com/main/screencasts/screencast.aspx?id=understanding-viewstate

EnableViewState="false"

一般に、クライアント上の ViewState とサーバー上のある種のキャッシュとの間でバランスを取る必要があります。データベースの再クエリを恐れる必要はありません。データを非常にうまくキャッシュできます。おそらく、ページキャッシュを有効にすることを検討してください。そのすべてのデータを Session に詰め込むことは避けたいと思いますが、それには独自の問題があります。

http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx

<%@ Page Language="C#" AutoEventWireup="true" ... %>
<%@ OutputCache ... %>
于 2009-02-24T20:43:13.733 に答える
0

ロブ、あなたの場合に私が試みることは、セッションでデータベースから取得したデータをキャッシュすることです-グリッドが最初にそれを要求したとき。

これを試して、グリッドのビューステートを無効にすることと組み合わせると、かなり洗練されたソリューションを思いつくことができます。

キャッシングのために Session を当てにできない場合は、仕事をする代替の永続化メカニズムが常にいくつかあります。

しかし、特定の状況の設計面から、私は間違いなくデータ キャッシング アプローチを使用します。

于 2009-02-24T21:39:18.543 に答える
0

Viewstate をローカルの一時ファイルに保存する方法の例を次に示します

このアプローチではまだ Viewstate を使用していますが、HTML を埋める代わりに、サーバー側で一時ファイルを作成しています。したがって、ユーザーは Viewstate が巨大であることを認識しません。上記のサンプルを書き直して、Viewstate データを別の場所 (データベースやメモリなど) に保存することもできます。

このアプローチの利点は、多くのコードを書き直す必要がないことです。欠点は、これらの一時ファイルがサーバー上のスペースをいっぱいにするため、時々クリーンアップする必要があることです。

于 2009-02-24T20:54:27.153 に答える