检查是否从bfcache,HTTP缓存或新检索加载了页面

时间:2016-07-25 14:24:12

标签: javascript firefox logging firefox-addon firefox-addon-sdk

下面的代码检查是否加载了网址,然后登录到控制台。我想知道是否有简单,干净的方法来检查页面是否从bfcache或http缓存加载? Firefox文档指出,如果我从URL A转到B然后点击后退按钮到URL A,则不应触发load事件,但这不是我的经验,load和{{1无论如何记录,有人知道为什么吗?

PageShow

1 个答案:

答案 0 :(得分:0)

我不确定是否有任何有目的的API,但我想到的解决方法是检查performance.timing.responseEnd - performance.timing.requestStart的值。如果是<= 5,则很可能是HTTPback-forward cache。否则,它是从网上下载的。

通过back按钮识别返回页面而不是打开干净的网址的方法是使用history API。例如:

// on page load
var hasCameBack = window.history && window.history.state && window.history.state.customFlag;
if (!hasComeBack) {
    // most likely, user has come by following a hyperlink or entering
    // a URL into browser's address bar. 
    // we flag the page's state so that a back/forward navigation
    // would reveal that on a comeback-kind of visist.
    if (window.history) {
        window.history.replaceState({ customFlag: true }, null, null);
    }
}
else {
    // handle the comeback visit situation
}

另见MDN的Manipulating the browser history文章。