`

避免到服务器的不必要的往返过程

阅读更多
虽然您很可能希望尽量多地使用 Web 窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用 ASP.NET 服务器控件和回发事件处理。
通常,只有在检索或存储数据时,您才需要启动到服务器的往返过程。多数数据操作可在这些往返过程间的客户端上进行。例如,从 HTML 窗体验证用户输入经常可在数据提交到服务器之前在客户端进行。通常,如果不需要将信息传递到服务器以将其存储在数据库中,那么您不应该编写导致往返过程的代码。

  如果您开发自定义服务器控件,请考虑让它们为支持 ECMAScript 的浏览器呈现客户端代码。通过以这种方式使用服务器控件,您可以显著地减少信息被不必要的发送到 Web 服务器的次数。

使用 Page.IsPostBack 避免对往返过程执行不必要的处理

如果您编写处理服务器控件回发处理的代码,有时可能需要在首次请求页时执行其他代码,而不是当用户发送包含在该页中的 HTML 窗体时执行的代码。根据该页是否是响应服务器控件事件生成的,使用 Page.IsPostBack 属性有条件地执行代码。例如,下面的代码演示如何创建数据库连接和命令,该命令在首次请求该页时将数据绑定到 DataGrid 服务器控件。
[Visual Basic]
Sub Page_Load(sender As Object, e As EventArgs)
' Set up a connection and command here.
If Not (Page.IsPostBack)
Dim query As String = "select * from Authors where FirstName like '%JUSTIN%'"
myCommand.Fill(ds, "Authors")
myDataGrid.DataBind()
End If
End Sub

[C#]
void Page_Load(Object sender, EventArgs e) {
// Set up a connection and command here.
if (!Page.IsPostBack) {
String query = "select * from Authors where FirstName like '%JUSTIN%'";
myCommand.Fill(ds, "Authors");
myDataGrid.DataBind();
}
}

  由于每次请求时都执行 Page_Load 事件,上述代码检查 IsPostBack 属性是否设置为 false。如果是,则执行代码。如果该属性设置为 true,则不执行代码。

  注意 如果不运行这种检查,回发页的行为将不更改。Page_Load 事件的代码在执行服务器控件事件之前执行,但只有服务器控件事件的结果才可能在输出页上呈现。如果不运行该检查,仍将为 Page_Load 事件和该页上的任何服务器控件事件执行处理。

分享到:
评论

相关推荐

    PHP实现多服务器session共享之memcache共享

    此外,为了优化性能,可以考虑使用PHP的session缓存限制器(session.cache_limiter),例如设置为"none"以禁用HTTP缓存头,避免不必要的HTTP往返。 最后,运维过程中要定期监控memcached的性能和资源使用情况,以...

    sql优化和存储过程

    同时,避免返回不必要的大型结果集,减轻客户端和网络压力。设计应用时,应引导用户输入足够的信息,以生成精确的查询结果,减少不必要的数据处理。 2. **查询优化**:避免使用通配符如`SELECT *`,强制限定输入域...

    asp.net服务器控件与组件开发

    2. 性能优化:合理使用控件属性和事件,避免不必要的服务器往返,减少页面的大小和加载时间。 3. 易用性:设计良好的API和文档,使其他开发者能够轻松理解和使用你的控件。 4. 可扩展性:考虑未来可能的需求变化,...

    SQL Server中的存储过程研究.pdf

    此外,存储过程的设计需要考虑到性能优化,避免在执行中产生不必要的数据库开销。 总结来说,存储过程在SQL Server数据库中是一种重要的编程工具,对于管理大型数据库系统,以及提高数据处理能力,都具有不可忽视的...

    cpp-H2O优化的HTTP1HTTP2服务器

    H2O利用操作系统提供的零拷贝技术,避免了不必要的内存复制,减少了CPU的负载,提高了服务的性能。 ### 6. 反向代理和负载均衡 H2O可以作为反向代理,将请求转发到后端的其他服务器,如Web应用程序服务器或静态...

    高效的web开发技术(3).docx

    1. **避免不必要的服务器往返过程**:通常,我们希望尽可能利用Web窗体框架的便捷性,但过度依赖ASP.NET服务器控件和回发事件可能导致不必要的服务器通信。仅在数据获取或存储时才触发往返过程。许多数据操作可以在...

    存储过程在.NET中的应用

    5. 避免在存储过程中进行不必要的计算和逻辑判断,这些应尽量在应用程序层面处理。 安全方面,存储过程可以限制对数据库的直接访问,从而防止恶意SQL注入。通过参数化查询,可以有效避免SQL注入攻击。同时,可以为...

    ASP.NET的性能优化

    - **禁用不必要的状态视图**:服务器控件默认启用状态视图(ViewState),这会在页面往返过程中自动维护控件状态,但也增加了页面大小和内存消耗。对于那些不需要维护状态的控件,可以关闭ViewState以减少资源消耗。...

    Java小程序与应用服务器进行大量数据传输的探讨.zip

    6. **缓存策略**:对于重复或不经常变化的数据,可以使用缓存来减少不必要的网络传输。Java小程序可以本地存储部分数据,减少对服务器的依赖。 7. **数据序列化**:选择合适的序列化技术也很重要。JSON因为其易读性...

    浅谈SQL Server数据库应用程序的性能优化.pdf

    此外,使用SQL事件探查器进行应用程序性能监控,可以发现可能的性能瓶颈,比如不必要的数据库调用,从而为批处理提供更多机会。 总之,优化SQL Server数据库应用程序性能,需要从数据库设计、存储过程、事务处理...

    ASP读书笔记

    - 避免在Page_Load中不必要的操作,如使用IsPostBack判断。 - 减少服务器端控件的使用。 - 关闭不需要的页面Session和控件ViewState。 - 禁用VB和JSP的动态类型,以提高编译效率。 通过理解以上知识点,可以更好地...

    oracle_sql优化

    在查询设计时,应尽量避免提取过多的不必要数据,这不仅浪费网络带宽,也会增加服务器的处理负担。通过精确定义查询范围、使用投影操作等方式可以有效减少数据传输量。 ### 9. 使用覆盖索引 覆盖索引是一种包含...

    ASP.NET中常用的26个优化性能方法

    - **值类型的 ToString 方法**:在拼接字符串时,使用值类型(如 int)的 ToString 方法,避免不必要的装箱操作,减少内存分配和垃圾回收压力。 - **StringBuilder 类**:对于大量字符串操作,使用 StringBuilder ...

    ado.net性能优化

    - **避免直接类型转换**:使用值类型如整数的ToString方法,而不是直接使用"+"号连接,以减少不必要的装箱操作,降低内存分配和垃圾回收的压力。 - **使用StringBuilder**:对于大量字符串拼接,使用StringBuilder...

    10.ASP.NET应用程序性能优化.pdf

    - 使用`Page.IsPostBack`属性可以帮助判断当前请求是否是从服务器返回后的回发请求,从而避免执行不必要的操作。 **2. 谨慎适当地使用服务器控件** - 服务器控件虽然方便使用且功能强大,但过多使用会增加服务器端...

    .NET 性能优化方法总结

    - **1.2.2 避免不必要的调用ToUpper或ToLower方法**:在处理字符串时,如果可以避免的话,应尽量减少对这些转换方法的调用,特别是在循环中。 - **1.2.3 最快的空串比较方法**:使用`string.IsNullOrEmpty()`或`...

Global site tag (gtag.js) - Google Analytics