【问题标题】:ASP.NET, MVC 3, C# website, pre-load linked pagesASP.NET、MVC 3、C# 网站、预加载链接页面
【发布时间】:2012-11-15 14:40:41
【问题描述】:

对于 ASP.NET、MVC 3、C# 网站,其主页具有指向其他页面的链接 -

在主页被请求并加载到浏览器中后,有没有一种方法可以“预加载”链接的页面,这样它们就可以立即呈现而无需返回服务器?

示例 - 假设我正在销售 10 种产品。每个产品都有自己的从主页链接的“产品详细信息”页面。当有人进入首页时,我想在后台“预加载”一个或多个“产品详情”页面,这样当点击“产品详情”链接时,该页面立即可用。

【问题讨论】:

  • 听起来更像是您想在服务器中打开一些缓存以获得更快的速度。
  • 您好,有些链接页面是完整视图,有些是部分视图。我希望​​在有人导航到主页后在后台加载链接页面。
  • 所以您希望我,用户,在后台加载 10 个额外页面,以便我可以更快地查看 1 个页面?您可能应该考虑使您的代码更快(CDN,代码优化)。如果谷歌这样做,你能想象一下吗?
  • 我不会需要预加载 10 个页面,我只需预加载 1 或 2 个页面,这可能是最常点击的页面。

标签: c# asp.net-mvc


【解决方案1】:

你在这里想要什么有点奇怪。您始终可以通过 AJAX 加载这些页面,然后处理对适当超链接的点击,并用您拥有的内容替换整个 DOM,但值得付出努力和维护吗?也许PJAX 会在这里有所帮助?

【讨论】:

  • 听起来他\她应该在使用SPA。
【解决方案2】:

如果您真的想进行某种并行加载,您可以拥有一个未实际显示在页面上但包含有效内容的元素。比如:

<div id="parallel_load" style="position:absolute;left: -1000px;width: 100px;></div>

然后你可以创建一个你想要去获取的东西的队列。由于它几乎完全是您要预加载的图像,因此您可以简单地拥有一个列表,该列表一次从服务请求一个图像,创建一个新元素并将其插入到此 div 中。这将迫使浏览器在用户执行其他操作时在后台加载新图像……点击、登录。

$(LoadNextImage(0));

function LoadNextImage(index)
{
    // do ajax call here to get the url to the image and id
    // use index to keep track of what images have loaded maybe

    var image = $('<img id="' + id + '"');
    image.attr('src', urlFromAjax);
    image.appendTo('#parallel_load');

    // moreImages would be some response from the server that
    // says you're not done yet possibly
    if (moreImages) 
        setTimeout(LoadNextImage, 500);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多