我的页面有 5 个部分。
每个部分大约需要 1 秒来渲染。
Page_Load()
{
RenderSection1(); //1 sec
RenderSection2(); //1 sec
RenderSection3(); //1 sec
RenderSection4(); //1 sec
RenderSection5(); //1 sec
}
我想加快此页面的加载速度。但同时请确保它不会降低 Web 应用程序其他部分的性能,也不会导致 IIS 崩溃。
有以下几种方法:
使用 AJAX 请求。需要对控制器或 Web 服务进行 MVC 风格的请求。
在每个部分周围使用 UpdatePanel 将不起作用 - 因为如果我尝试使用此处的方法同时向多个 UpdatePanel 提交刷新:http://encosia.com/2007/07/13/easily-refresh-an-updatepanel-using-javascript/ http://encosia.com/2007/07/13/easily-refresh-an-updatepanel-using-javascript/,
最后一个请求总是会获胜:http://www.codeproject.com/Tips/57035/Simultanious-Async-Requests-Using-Multiple-Update-.aspx http://www.codeproject.com/Tips/57035/Simultanious-Async-Requests-Using-Multiple-Update-.aspx
使用回答中描述的 ASP.NET 线程在 ASP.NET Web 应用程序中创建线程的正确方法 https://stackoverflow.com/questions/1824933/right-way-to-create-thread-in-asp-net-web-application。所以我会为每个调用使用一个单独的线程:
RenderSection1、RenderSection2 等...
将占用时间的逻辑(通常是数据库请求)移至另一个 DLL 或外部 Web 服务中的应用程序服务类。就像是
OrderDTO GetDataForViewOrder(int orderID)
{
}
并在该 DLL 中使用多线程。这种方法似乎提供了最好的可扩展性,但也将 UI 细节引入了应用程序服务层。
您认为哪种方法最好,为什么?
ajax.
线程处理并没有多大帮助,因为整个页面需要等待所有线程完成。而且 ASP.NET 本身不太可能需要时间。更有可能的是您的数据库或其他东西。线程还会给您的应用程序增加更多的复杂性,但不会从中获得太多好处。仅在 Web 应用程序中使用线程来执行维护任务等,其他一切都可以使用 ASP.Net 来解决。
使用 ajax,您可以快速返回主页,并且一旦从 ajax 请求返回结果,所有部分都会被渲染。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)