Javascript生成的内容未缓存Ratchet v2.0.2

Javascript generated content not cached Ratchet v2.0.2

本文关键字:Ratchet 缓存 v2 Javascript      更新时间:2023-09-26

我正在使用Ratchet附带的电影演示应用程序作为我的应用程序的模板。

我做的第一件事是将索引页上的静态html影片更改为jQueryajax获取的影片。但我遇到的问题是,当我回到索引页面时,它是空的,因为javascript获取和生成的内容没有缓存。

同样的问题出现在这里:https://groups.google.com/forum/#!主题/goratchet/3nlzW_A8Tys

解决方案是添加EventListener("push")并缓存页面,但我不清楚如何实现这一点。

  • 我必须使用推送来获取内容吗?如果需要,如何获取
  • 如何缓存页面

Push.js在您离开页面之前缓存上下文,并将其缓存在由导航事件的时间戳键控的关联数组domCache中。通过触发带有时间戳的popstate事件返回到缓存页面。

var e = new CustomEvent('popstate')
e.state = <cached-timetamp-key>
window.dispatchEvent(e)

缓存项密钥是缓存后堆栈cacheMapping.cachedBackStack 中的最后一个项

因此,如果您向push.js(在您的ratche.js文件中)添加一个方法,以返回backpack 中的下一个项目

var getPreviousId = function () {
    var backStack = JSON.parse(cacheMapping.cacheBackStack);
    return backStack.length > 0 ? backStack[backStack.length -1] : null;
}

以及在哪里保存先前的id,在哪里保存当前id,例如查找

PUSH.id = data.id;

并添加行以暴露之前的id

PUSH.id = data.id;
PUSH.previousId = getPreviousId(); //save previous id

然后您可以使用以下返回到缓存的页面

var e = new CustomEvent('popstate');
e.state = PUSH.previousId;
window.dispatchEvent(e);

如果你想让棘轮自动处理,你必须在合适的时候进入touchend()方法或PUSH()本身调用popstate()