我有一个 ASP.NET 2.0 页面,其中包含许多重复块,包括第三方服务器端控件(因此它不仅仅是纯 HTML)。就 CPU 和 RAM 而言,每一个的生成都非常昂贵。我目前正在为此使用标准的中继器控件。
这种简单的方法有两个问题:
- 整个页面必须在任何页面返回给客户端之前呈现,因此用户必须等待很长时间才能看到任何数据。(我用 写进度消息
Response.Write
,所以有反馈,但没有实际结果。) - ASP.NET 工作进程必须同时将所有内容保存在内存中。这没有内在的需求:一旦处理了一个块,它就不会改变,因此它可以返回给客户端并且可以释放内存。
我想以某种方式一次将这些块返回给客户端,因为每个都是生成的。我正在考虑将Repeater 中的内容提取到一个单独的页面中并使用AJAX 重复获取它,但其中涉及一些复杂性,我想知道是否有一些更简单的方法。理想情况下,我希望将其保留为一页(从客户的角度来看),但要逐步返回。
另一种方法是在服务器上做类似的事情:仍然创建一个单独的页面,但让服务器访问它,然后Response.Write()
将 HTML 获取到真正客户端请求的响应流。不过,有没有办法在这里避免 HTTP 请求?是否有一些 ASP.NET 方法可以在 HTTP 请求之外呈现 UserControl 或 Page 并简单地将 HTML 作为字符串返回给我?
我也对如何做到这一点持开放态度。