javascript - 我的页面是从浏览器缓存中加载的吗?

标签 javascript jquery browser-cache jquery-events browser-history

我在页面上有一个“新项目”徽章,我想在页面从缓存加载后立即更新(即点击“后退”或“前进”返回此页面时)。实现此目标的最佳方法是什么?

设置非常简单。该应用的布局每 8 秒查找一次新项目,并相应地更新徽章 + 项目列表。

$(function() {
    setInterval( App.pollForNewItems, 8000 );
});

当有人离开此页面查看某个项目的详细信息时,可能会发生很多事情。在任何用户查看它们之前,事物都是“新的”,并且该应用可能会有多个用户同时使用它(用于调用中心或支持票证的工作流类型)。

为了确保徽章始终是最新的,我有:

$(window).bind('focus load', function ( event ) {
    App.pollForNewItems();
});

..虽然这可行,但仅当页面从缓存中加载时,轮询“加载”上的新项目才有用。是否有一种可靠的跨浏览器方式来判断页面是否正在从缓存中加载?

最佳答案

Navigation Timing 现在在大多数浏览器中都有(ie9+) http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface

 if (!!window.performance && window.performance.navigation.type === 2) {
   // page has been hit using back or forward buttons
 } else {
   // regular page hit
 }

关于javascript - 我的页面是从浏览器缓存中加载的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433769/

相关文章:

asp.net-mvc - MVC 4 - 注销后后退按钮问题

javascript - 删除脚本标签

javascript - 为什么八进制文字不作为字符串转换为数字?

javascript - AngularJS 过滤器刷新占位符

javascript - 如何确保浏览器不缓存我的 JS/CSS

php - php 的 `filemtime` 对于浏览器缓存或缓存清除来说是个好主意吗?

javascript - 身份验证 - 每个 ajax 中的 key

jquery - 包裹在 div 中时不显示图像

JQuery - 至少选中一个复选框

Javascript/Jquery 代码在第一个事件上运行一次,在第二个事件上运行两次,依此类推