【问题标题】:Can I cache a segment of HTML with javascript?我可以用 javascript 缓存一段 HTML 吗?
【发布时间】:2015-06-18 02:21:54
【问题描述】:

我的场景:

我有一个页面——我们称之为 items.aspx——它有一个 HTML 表,它是通过对我的 ASP Web API 控制器的$.get() 调用生成的。当用户单击 HTML 表中的一项时,用户会被发送到表示该项详细信息的页面——我们称其为 itemDetails.aspx。我预测通常会查看 itemDetails.aspx 页面,然后决定取消并重定向回 items.aspx 页面。

问题:

问题是每次加载 items.aspx 页面时,ajax 调用都会再次运行,并且需要几秒钟来填充表格。

问题:

当用户单击项目以转到 itemDetails.aspx 页面时,是否可以在有限的时间内存储/缓存表格的 HTML 输出?因为我只希望在用户单击项目链接时发生这种情况,所以我认为 javascript 将是最好的工具。

【问题讨论】:

    标签: javascript asp.net vb.net caching webforms


    【解决方案1】:

    您可以使用为 HTML 返回 jQuery Promise 的函数,无论它是从本地缓存加载还是从 AJAX 请求加载。

    一个简单的例子:

    // Refers to cached HTML when available
    var cached;
    
    // Returns a promise for the HTML
    function getHtml() {
      var defer;
      if(cached) {
        defer = new Deferred();
        defer.resolve(cached);
      } else {
        defer = $.get(/* ... */);
        defer.then(function(response) {
          cached = response;
        })
      }
    
      return defer.promise();
    }
    

    用法:

    getHtml().then(function(html) {
      $container.html(html);
    })
    

    一个真正的实现可能会做一些事情来防止并发 $.get 调用,并在需要时使缓存过期。

    【讨论】:

    • 这当然是一个正确的答案,但我认为我们最终确定的解决方案是将JSON数据存储在window.localstorage中。导致等待时间的是 JSON 数据的加载。无需缓存所有 HTML。
    • 这个函数将保持不变 - 只需调用它getJson :)
    猜你喜欢
    • 2011-06-28
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多