代码之家  ›  专栏  ›  技术社区  ›  user1946932

Asp.net预取策略?

  •  0
  • user1946932  · 技术社区  · 4 年前

    在/pages/ddashboard/default.aspx的标题中,我包含了以下内容:

    <link rel="prefetch" href="/pages/agent/statistics/">
    <link rel="prefetch" href="/pages/agent/statistics/transactions/">
    <link rel="prefetch" href="/pages/agent/consumer/">
    <link rel="prefetch" href="/pages/agent/account/">
    <link rel="prefetch" href="/pages/feedback/">
    <link rel="prefetch" href="/pages/contact/">
    <link rel="prefetch" href="/pages/agent/cancel-order/">
    <link rel="prefetch" href="/pages/agent/resources/">
    <link rel="prefetch" href="/pages/user/preferences/">
    <link rel="prefetch" href="/pages/agent/profile/">
    <link rel="prefetch" href="/pages/agent/statistics/webservices/">
    <link rel="prefetch" href="/pages/agent/statistics/webservices/log/">
    <link rel="prefetch" href="/pages/agent/statistics/webservices/error-log/">
    <link rel="prefetch" href="/pages/user/download-data/?data-type=Transactions">
    <link rel="prefetch" href="/pages/help/">
    <link rel="prefetch" href="/pages/agent/resources/">
    <link rel="prefetch" href="/pages/about/">
    

    这样做意味着新用户离开主页(/pages/ddashboard/default.aspx)的导航速度要快得多。所有这些链接都指向每个文件夹的default.aspx页面。

    然而,在测试时,我会在主页上坐一分钟,以确保所有预取页面都有时间加载。

    我正在考虑将所有这些预取链接移动到ASP。NET母版页,所有这些页都使用该母版页。因此,如果一个新用户只在主页上停留了几秒钟,那么后续页面可以继续加载预取页面。

    这是更好的策略吗?或者它会对服务器征税太多,重复请求aspx页面,我认为这些页面没有缓存,尽管它们的png/jpeg、css和JavaScript资源是缓存的?

    0 回复  |  直到 4 年前
        1
  •  1
  •   OGorbitz    4 年前

    通过预取所有这些页面,您可以将服务器流量乘以加载用户可能无法访问的页面。这是否可以是您需要做出的开发决策,这是在具有更高的站点响应能力和需要更多服务器功率之间的权衡。如果您希望每个用户都能对服务器利用率产生成倍的影响,这取决于您自己。

    每个预取都执行自己的http请求,这将需要服务器处理每个请求并运行您的aspx页面。将预取数据移动到母版页除了限制代码重复之外,没有任何作用,因为每个页面仍然需要由服务器处理,就像用户直接访问该页面一样。

    如果您仍然决定预取所有内容,我建议您将预取链接放在母版页中,因为您只需要将它们放在一个文件中。

    编辑:

    另一个主要缺点是,根据预取页面的范围,如果这些页面上有动态数据,用户可能会在浏览器显示预取版本时看到过时的数据。浏览器中可能有防止这种情况的机制,但这是我要研究的问题。

    推荐文章