.asp 页面刷新过慢?
展开全部
记录上次请求页面的信息。
那么要保存上次请求页面上控件的值,也就是页面刷新后,填写的值不变,比方在textbox填了个‘a’,页面刷新后还是'a',.NET框架为实现这种机制,于是就用到了viewstate视图状态来保存这些控件的值,
那么将所有控件的值存在什么地方呢?也就是你看见的进过序列化后都存在隐藏域里input type="hidden" name="__VIEWSTATE",然后服务器接收后会反序列化这些隐藏域的值然后又从新给这些控件赋值,从而页面刷新后还能记录上次请求时候的所有控件的值。
以上为基本原理。
现在搞点实际的,VIEWSTATE是个极其浪费性能的东西,因为每次都要反序列化与序列化,如果你的VIEWSTATE保存了太多的值,那么将导致网页速度载入过慢,所以你的网站网页打开超费劲。
这个时候该怎么办?
一:关闭VIEWSTATE视图状态,每个服务器控件都会有个
EnableViewState的属性,这个属性也就是是否要使用视图状态记录值
设置为true为记录,设置为false不记录,可以做个测试放个textbox设置为EnableViewState为false,然后输入个值,然后再用按钮去刷新页面,那么textbox又会为空。这个时候可以将页面上刷新后不需要记录状态的都设置为flase,比方通常的查询,每次查询都需要重新绑定数据,这个时候可以设为false来提高性能,这也就是大家常说用来显示数据的控件,都很喜欢用repeater而不用gridview或datagrid,因为repeater不会输出过多的VIEWSTATE,完全自己手写代码,而gridview将产生大量的VIEWSTATE,虽然封装的很好,用起来很方便,有得必用失,极其浪费性能,自己做个测试查看源文件对比下VIEWSTATE就晓得了。
二:通过压缩工具对VIEWSTATE进行压缩,有的地方也没办法,一定要用到VIEWSTATE,那么也只能去压缩他了。
希望对你有帮助,嘿嘿都是自己写的,喝口水先,我就晓得这2种方法,如有找到更多方式,麻烦发个短消息给我。
那么要保存上次请求页面上控件的值,也就是页面刷新后,填写的值不变,比方在textbox填了个‘a’,页面刷新后还是'a',.NET框架为实现这种机制,于是就用到了viewstate视图状态来保存这些控件的值,
那么将所有控件的值存在什么地方呢?也就是你看见的进过序列化后都存在隐藏域里input type="hidden" name="__VIEWSTATE",然后服务器接收后会反序列化这些隐藏域的值然后又从新给这些控件赋值,从而页面刷新后还能记录上次请求时候的所有控件的值。
以上为基本原理。
现在搞点实际的,VIEWSTATE是个极其浪费性能的东西,因为每次都要反序列化与序列化,如果你的VIEWSTATE保存了太多的值,那么将导致网页速度载入过慢,所以你的网站网页打开超费劲。
这个时候该怎么办?
一:关闭VIEWSTATE视图状态,每个服务器控件都会有个
EnableViewState的属性,这个属性也就是是否要使用视图状态记录值
设置为true为记录,设置为false不记录,可以做个测试放个textbox设置为EnableViewState为false,然后输入个值,然后再用按钮去刷新页面,那么textbox又会为空。这个时候可以将页面上刷新后不需要记录状态的都设置为flase,比方通常的查询,每次查询都需要重新绑定数据,这个时候可以设为false来提高性能,这也就是大家常说用来显示数据的控件,都很喜欢用repeater而不用gridview或datagrid,因为repeater不会输出过多的VIEWSTATE,完全自己手写代码,而gridview将产生大量的VIEWSTATE,虽然封装的很好,用起来很方便,有得必用失,极其浪费性能,自己做个测试查看源文件对比下VIEWSTATE就晓得了。
二:通过压缩工具对VIEWSTATE进行压缩,有的地方也没办法,一定要用到VIEWSTATE,那么也只能去压缩他了。
希望对你有帮助,嘿嘿都是自己写的,喝口水先,我就晓得这2种方法,如有找到更多方式,麻烦发个短消息给我。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询