我可以用 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
调用,并在需要时使缓存过期。
我的场景:
我有一个页面——我们称之为 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
调用,并在需要时使缓存过期。