页面占用太多时间在Safari Mac中加载

时间:2011-02-21 18:13:13

标签: asp.net performance safari

我们有一个网络应用+网站,其中存在性能问题。我做了很多改进,将加载时间从大约10-15减少到大约2秒(根据Yslow的说法) 它仍然太大(大约600kb用于所有东西),但这是一个巨大的进步,这就足够了......如果在Safari / Mac(我们的客户端的配置)上,该网站不需要大约2分钟(!)到负载。
我们客户的客户也经常使用Safari / Mac,因此这是一个大问题(例如,我们不能只说“更改您的浏览器”)。

我做了很多测试:

  • Safari Mac:第一次加载超过2分钟,刷新超过10秒
  • Firefox Mac:足够快
  • Safari Windows:足够快
  • Firefox Windows:足够快
  • IE Windows:足够快

知道为什么这个特定的网站花了这么多时间加载这个特定的浏览器?我不知道如何测量Safari的性能:JS太多了,是不是太大了......? 网站:http://www.syntec-recrutement.org/

由于

1 个答案:

答案 0 :(得分:1)

这可能有点晚了但无论如何,我今天在ASP.NET网站上遇到了类似的问题。

原来是造成问题的VIEWSTATE的大小。

我有很多业务数据包含在组合和树视图中,默认情况下,视图状态为那些吸盘所有,总计超过250kb!出于某种原因,在Windows 7 64位系统上,这不会导致问题(我在IE9,Chrome 13,Firefox 5,Safari 5中进行测试),但在Mac OS X 10.6上,在所有浏览器中加载的页面都很慢我测试过(Safari 5,Firefox 5,Chrome 13)。一旦我缩小了视图状态的大小,它就可以很好地工作,并且Windows和OS X上的客户端加载时间一直很快。

因此,如果有人遇到此问题,我会建议在页面呈现后查看您的页面源,并查看该视图状态是否非常大。如果是这样,请尝试减小视图状态的大小。

执行此操作的一种简单方法(ASP.NET 2.0 +)是将视图状态存储在服务器上的会话状态中(只要您的应用程序没有大量用户并且您的服务器具有足够的RAM,这应该没问题和会话状态启用等)。您可以通过将以下内容添加到页面的代码隐藏文件中来轻松完成此操作:

PageStatePersister _pers;

protected override PageStatePersister PageStatePersister   
{   
    get
    {
        if (_pers == null)
        {
            _pers = new SessionPageStatePersister(this);
        }
        return _pers;
    }
}

有关此技术的更多信息,请查看http://msdn.microsoft.com/en-us/library/system.web.ui.pagestatepersister.aspx