

塾の評価システムの開発を行っています。  
ASP.NET MVC（vb.NET、 .NET Framework4.6）で構築したWebアプリケーションです。

縦に生徒の名称、横に評価項目がある一覧表をHTMLで生成しており、  
各セルがテキストボックスで点数(0~100)を入力出来る様になっています。  
（セルごとに点数入力後、DBへのデータ更新あり）

その一覧表の数が膨大で、500行 * 40列程度の一覧となり、入力項目が合計で2万セルほど存在します。  
項目数が多いのがネックで画面の初期表示に30秒ほど時間が掛かっており、パフォーマンスに問題がある状態です。  
サーバ、クライアントの通信量、通信回数の削減の為、静的ファイル(JS、CSS)のバンドル、サーバレスポンスのgzip圧縮などの対応は実施致しましたが、芳しくない状態です。

以下の観点を含めて、パフォーマンス改善の為、どの様な対応方法を取るのが適切でしょうか。  
①スペックの低いクライアントのPCでも表示に時間が掛からない。  
②一覧表を最適化し、要件を満たせそうなサードパーティ製品がないか？  
（GrapeCity社のSpread.jsを使えないかと考えています。)

どうしても全項目を並べて表示して値を変更出来る様にしたいという要件があり悩んでおります。


CC BY-SA 4.0
2022-08-01T14:43:21.850
90314
2022-08-02T00:39:26.470
53801
question
javascript html asp.net
ASP.NET Webサイトの画面表示のパフォーマンス改善をしたい


2万セルの画面で実際に入力を試してみたのでしょうか？ 入力に要する時間はどれぐらいでしょうか？
入力時間に対して「画面の初期表示に30秒ほど」は無視できない時間でしょうか？
（入力に３時間かかるのなら、初期表示に30秒かかってもたいしたことないのでは？）

また誤りなく入力できますか？ 画面設計を改めるのが先なような気がします。[最適化 -
格言](https://ja.wikipedia.org/wiki/%E6%9C%80%E9%81%A9%E5%8C%96_\(%E6%83%85%E5%A0%B1%E5%B7%A5%E5%AD%A6\)#%E6%A0%BC%E8%A8%80)より

> 「プログラム最適化の第一法則: 最適化するな。プログラム最適化の第二法則（上級者限定）: まだするな。」 - Michael A. Jackson


CC BY-SA 4.0
2022-08-01T22:33:45.073
90321
2022-08-01T22:33:45.073
4236
90314
answer


質問のコメント欄で提案しましたがページングを試してみてはいかがですか？

ASP.NET MVC でページング (CORE)  
<http://surferonwww.info/BlogEngine/post/2021/01/30/paging-in-aspnet-core-mvc-
application.aspx>

質問者さんのアプリのどこがボトルネックなのかわからないので、ピンポイントで改善案は出せませんが、ページングを行えば、(1) 一度に DB
から取得するレコード数を減らせる、(2) ASP.NET が html にレンダリングする時のサーバーの負担を減らせる、(3)
ブラウザに送信するデータを減らせる、(4) ブラウザの表示にかかる時間を減らせるということで、ある程度効果がありそうな気がします。


CC BY-SA 4.0
2022-08-02T00:39:26.470
90325
2022-08-02T00:39:26.470
51338
90314
answer