我可以用 javascript 缓存一段 HTML 吗?

Can I cache a segment of HTML with javascript?

我的场景:

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

问题:

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

问题:

是否可以在用户点击项目进入itemDetails.aspx页面时,store/cache限时table的HTML输出?因为我只希望在用户单击项目 link 时发生这种情况,所以我认为 javascript 将是最好的工具。

您可以使用 returns 和 jQuery Promise 的函数 HTML,无论它是从本地缓存加载还是从 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 调用,并在需要时使缓存过期。