大家好,我正在使用 vs2008 c# asp.net。我的项目中有页面,其中包含许多 gridviews 列表视图和文本框、图像上传控件。所有控件均来自带有 vs2008 的标准工具包。我想知道改善项目页面加载时间的可能方法。我听说过视图状态压缩。还有其他建议吗?请帮忙。谢谢
4 回答
您应该做的第一件事是测量当前状态,有很多工具可以帮助您完成这项任务:
- 谷歌页面速度
- 慢
- 网页测试
- Pingdom 工具
- 提琴手 2
- ViewState 大小- Firefox 分机。
- ViewState 查看器- Firefox 分机。
你需要测量的东西
- 第一个字节的时间是多少,或者服务器生成页面所需的时间,它应该低于 0.5 秒。如果此时间大于此时间,请使用 Visual Studio 分析器定位瓶颈并优化关键部分
- 测量视图状态大小并分析内容,因为您使用了很多网格视图,这可能是问题所在,因此这里有几十个与该问题相关的帖子
- 了解ViewState,以及它是如何工作的,这里是优秀的帖子
- 你应该减少请求的数量,将 css 和 JavaScript 组合在一个文件中,有很多免费工具可以做到这一点
- 开启 IIS gzip 压缩
- 使用 fiddler 查看你的请求是如何在本地缓存的
- 使用Css Image Sprites处理小图像
- 使用 asp.net 缓存,它真的很好,它为许多使用场景提供了解决方案,特别是在流量增加是问题的情况下很有帮助
首先重点优化服务端。如果您有“许多网格视图”,则取决于它们的来源(例如数据库),您可以尝试改进数据访问的处理。搜索对您的应用程序有意义的适当优化技术。
您也可以尝试减少网格的数量。由于要求,这可能不是一个可能的选择。
您还可以查看将 ViewState 从页面顶部移动到底部,以及其他标准客户端优化(减少资源调用的数量,将 css 放在文档头部,将脚本放在文档末尾,启用客户端-side 缓存等...)。
ViewState 分块
作为压缩的替代方法,您可以考虑对 ViewState 进行分块,这基本上是将 ViewState 划分为多个隐藏字段,而不仅仅是一个。这可以对整体页面性能产生适度的改进。
查看这篇文章:大 ViewState 和 ViewState 分块
替代存储
除了页面上的隐藏字段之外,还有其他几种方法可以存储 ViewState 信息。
查看这篇文章:使用 ASP.NET 2.0 Provider Architecture 管理 ViewState
视图状态压缩
就个人而言,我发现压缩ViewState
网络在性能方面的最大收益,所以如果有可能我肯定会探索它。Telerik 的RadCompression模块效果很好,但它不是免费的。你也可以自己实现它。
查看有关 ViewState 压缩的这些文章:
最后,在不需要跟踪 ViewState 的地方,设置EnableViewState
为 false。
- ViewState Mode 可以设置为 false
即使您使用的是重量级控件,它们也可能不需要“启用” ViewState。因此,请尝试确定您何时不需要它们并将 ViewStateMode 属性设置为 false :
ViewStateMode="Disabled"
这将减小 ViewState 的大小,从而提高性能
- gzip 压缩
按照本教程,您可以设置 ViewState 压缩以减小其大小并提高网站性能
- 监控您的 ViewState 大小
通过使用这个 Mozilla插件,您可以监控 ViewState 的大小并查看这是否是网站运行缓慢的实际原因,因为这也可能与 sql 查询或与 ViewState 不同的其他原因有关