2

私は 3 つの jQGrids を持つページで作業しており、JSON を使用してバインドしています。MVC 3 アプリケーションに取り組んでいます。

たとえば、部門名リストを表示するドロップダウンがあります。部門を変更した場合、グリッド内のその部門の下にあるすべての従業員をロードする必要があります。ユーザーは、グリッド内の一部のレコードを頻繁に編集します。

しかし、ユーザーはすぐに保存することはありません。非常に多くの部門の従業員を編集し続け、1 回の保存を行います。

ユーザーがグローバル保存をクリックするまですべての変更を保持するために、すべての従業員レコードの詳細を JSOn 形式で隠しフィールドに保存することにしました。したがって、非表示からロードし、選択した部門に基づいてグリッドにバインドし、ユーザーがグリッドで更新するときにローカル JSON を更新し、最後に非表示の JSON をサーバーに送信します。

非表示フィールドに 100 個の従業員の詳細 JSON データの 10 個のフィールドを格納して使用しています。私は応答サイズと投稿データサイズを増やしていることを知っています。問題は、パフォーマンスに大きな問題が発生するかどうかです。または、セッションに保存してそこからロードできますか? どちらが最善の方法でしょうか?

4

1 に答える 1

2

理論的には、ユーザーがポストバックしたときにページがデータを送り返すのに遅延が発生する以外に問題はありません。

しかし、実生活では、ポストバックの非常に大きなフィールドで(まれではあるが既存の問題)問題が発生しました。一部のルーター、またはプロキシは、それらをカットまたはブロックします-実際の理由はわかりません。場合によっては、単に愚かなフィルターになることもあります。

このまれなケースが発生しないようにするには、入力隠しフィールドを圧縮して複数に分割します (サイズが 1 つのフィールドのサイズが大きい場合に問題が発生します)。

現在、セッションは、前後に送信されるデータを最小限に抑えるのに役立つ優れたソリューションです。セッションが成長する可能性があり、ユーザーが2つの同じウィンドウを開いた場合に何をどのように処理するかを見つける必要があります。セッションデータは2つの異なるものでなければなりません。

入力フィールドを圧縮する方法の例。ビューステートについて話していますが、考え方は同じです:

http://www.codeproject.com/Articles/14733/ViewState-Compression

http://www.hanselman.com/blog/ZippingCompressingViewStateInASPNET.aspx

http://www.bloggingdeveloper.com/post/How-To-Compress-ViewState-in-ASPNET-20-ViewState-Compression-with-SystemIOCompression.aspx

于 2013-01-31T06:52:57.557 に答える