日期:2014-05-18  浏览次数:20453 次

页面载入特别慢,从哪方面着手解决
做了一个工作时间统计的系统,用的是VB.net + sqlserver 。
其中最关键的地方是一个输入工作时间的页面,访问的最多也最频繁。
但是完成以后,页面载入特别慢。
页面分为三个部分,上面有一个日历和一个各种时间的选择DropDownList。
下面是详细的各项工时的输入。是一个GridView。一共10列,行数不固定,有的可能很长。
当下面的行数很多时(30+),上面的两个部分都已经看见了,下面还是空白一片。大概从打开到全部完成要15秒。
请问有可能是下面哪些方面的原因。

1> 网络传输(应该不是,本地打开也很慢)
2> 数据库操作,画面load的时候,访问了数据库很多次。
3> 初期化时候的计算(请问有没有什么诊断工具可以看看)
4> 客户端的JavaScript计算。(这个也很多)

------解决方案--------------------
把客户端的JavaScript放在页尾加载
------解决方案--------------------
(1)将数据库访问尽量减小,你将sql尽量合拼吧.
(2)将js合拼为一个,减小请求数,再js放在页尾加载..
(3)图片是不是好多,是不是size好大,应该尽量减小..
------解决方案--------------------
引用楼主 LoveByTheCatfish 的帖子:
...
2> 数据库操作,画面load的时候,访问了数据库很多次。
...

------解决方案--------------------
也有可能数据量过大,客户端机器性能不够造成的。
Session中不要存过多的数据。
------解决方案--------------------
控件对 一些 非必要的 ViewStatusEnable 会产生庞大的 __VIEWSTATE, 
如果, HTML较长和JavaScript的频繁使用
浏览器对HTML的呈显可能也须要较长时间
------解决方案--------------------
在页面加载数据时是否将数据库中所有的记录全部查询出来,如果这样做性能肯定会大大降低,所以最好是在页面加载时将需要显示的数据查询查来
------解决方案--------------------
现在的情况就是有一个Gridview的行数多的话就慢,
检查GridView的构造顺序,顺序不好的话性能会很慢。
------解决方案--------------------
现在的情况就是有一个Gridview的行数多的话就慢,
检查GridView的构造顺序,顺序不好的话性能会很慢。
------解决方案--------------------
我觉得可能是从数据库查询到返回构造gridview的这个过程比较慢,你把sql放到查询分析器里执行下,看看时间消耗。
------解决方案--------------------
如果上面的那个很快执行完的话,你就要考虑优化下JS了。
------解决方案--------------------
1、尽量减少访问数据库的次数
2、初期化时候的计算,可以在代码开始的地方输出当前时间,代码执行后输出当前时间,就知道代码执行多长时间了
3、Gridview做分页
------解决方案--------------------
页面分开来输出时间差. 看看到底哪一步占用时间最多.
------解决方案--------------------
应该是数据库访问问题。
------解决方案--------------------
各方面都要考虑到,我也做过类似的排班次的页面,一般情况下是50个员工一天的班次,每15分钟一格,大概页面上有3000个格子,并且每5秒钟要刷新一次更新最新的状态。大概要考虑的地方有:

1.数据库设计,需要有一些冗余的字段设计,以便能快速地查询到需要的数据(这种系统查询操作比更新操作要多很多)。
2.对应这个页面有所有业务数据需要缓存在内存,并且要很好的组织,以便快速地查询。更新数据到数据库,同步更新缓存,并且只更新修改过的数据,力求更新量最小。
3.页面要尽量地干净,所有Html代码尽量自己输出(按自已要的格式),不要有自动生成的一些多余的东西(我是用的repeater来输出的)。
4.页面脚本对每个格子的操作时,也要做缓存,一旦找到就缓存起来,第二次用就不需要再找了。对客户端的控件要有好的查找和使用方式,尽量不要做重复的动作。
5.我更新数据是用的webservice请求的数据,通过js更新每个格子的状态,请求的数据要尽量的小,没有修改的数据就不要返回了,只需要更新修改过的数据,并且要合理的组织数据,以求数据量最小(在没有需要数据更新的情况下,我返回的数据量只有200多字节,更新一个格子大概几十个字节,一般5秒钟内只会有数十个格子的数据会改会,不会3000个格子在这么短时间内能改变,即时有十多个客户端)。

即时这样,在第一次加载的时候也需要好几秒左右(第一次所需要加载的数据太多了,员工信息,班次信息,工作安排信息,权限信息等等),但后面基本上没有性能上的问题。
------解决方案--------------------
各种系统的具体需求不同,需要综合考虑,具体问题具体考虑,上面的可供参考一下。:)