我怎样才能加快这页的速度?

本文关键字:速度 | 更新日期: 2023-09-27 18:05:24

我有一个ASP。Net WebForms页面,有两个下拉列表(一个有10个选项,另一个有大约600个)和大约5个面板。根据从下拉列表中选择的值,在异步回发期间通过查询数据库使其他面板可见或不可见。

我的困境是这样的:页面在慢连接上不够快,特别是在页面加载期间。在查看呈现的页面时,即使在初始加载时,视图状态的大小也很大。此外,有大量的数据需要填充下拉菜单,这可能会影响视图状态的大小。

有什么建议可以加快这个页面的速度吗?

我怎样才能加快这页的速度?

可以根据需要加载第二个下拉列表的选项(例如使用AJAX控件工具包或类似控件的自动完成)

您可以禁用页面的事件验证,这将减轻视图状态的负载(这就是初始加载时大量视图状态的原因)。事件验证确保在呈现之前,约束输入(下拉列表、复选框列表、单选按钮列表)中的每个可用选项都已注册。这个信息是和视图状态一起序列化的——这肯定会要了你的命。

您还可以使用不同的方法从600项下拉列表中进行选择。也许你可以在这里提供一个AJAX自动完成文本框,而不是下拉框,或者提供一些搜索工具,让用户搜索并查看他们在600个项目列表中寻找的N个匹配项。

在我看来,600对于一个下拉菜单来说太大了,如果你把更多的精力放在缩小用户的选择上,你可以得到更多的带宽。但是,是的,我的意见在设计上,如果你禁用事件验证的页面,你会看到一个巨大的下降马上…

<%@ Page Title="Home Page" EnableEventValidation="false" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"  ... more attribs ... />

如果可以,在各自的Init事件中填充DropDownList控件。这样,它们的选项就不会存储在ViewState中。这样可以节省相当多的字节。

或者更好的是,你能完全关闭ViewState吗?

gzip HTML和json,减少元素计数和解析,简化HTML等,以减少流量和渲染的延迟

您可以做各种事情来提高性能!

1)首先看看雅虎的绩效规则。这些通常是帮助您加快网站速度的最佳实践列表。

2)看看chrome的检查器(设置->工具->开发者工具)或其他浏览器的等效工具(firefox中的Firebug,我相信IE9也有工具),找出主要的痛点在哪里。它们将显示从文件大小到请求数量和页面加载分解的所有内容。

3)必要时研究AJAX和延迟加载。加载时间仍然存在,但是对于用户来说,它将不那么明显

4)检查查询的性能,看看是否可以优化它们。

希望这对你有帮助!

如果请求接受zip或deflate,让您的响应返回它。

var response = HttpContext.Current.Response;                
string acceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"] ?? "";
if (acceptEncoding.Contains("gzip"))
{
    response.Filter =
        new System.IO.Compression.GZipStream(response.Filter,
            System.IO.Compression.CompressionMode.Compress);
    response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate"))
{
    response.Filter =
        new System.IO.Compression.DeflateStream(response.Filter,
            System.IO.Compression.CompressionMode.Compress);
    response.AppendHeader("Content-Encoding", "deflate");
}

并将您的ViewState移动到会话。在基页类上重写此属性。

protected override PageStatePersister PageStatePersister
{
    get { return new SessionPageStatePersister(this); }
}