我在页面上有一个"新项目"徽章,我想立即更新页面从缓存中加载(即,当点击"返回"或"转发"返回此页面时).完成此任务的最佳方法是什么?
设置非常简单.应用程序的布局每8秒查找一个新项目,并相应地更新徽章+项目列表.
$(function() {
setInterval( App.pollForNewItems, 8000 );
});
Run Code Online (Sandbox Code Playgroud)
当有人导航离开此页面以查看项目的详细信息时,可能会发生很多事情.在任何用户查看之前,事情都是"新的" ,并且应用程序可能会有多个用户同时使用它(用于呼叫中心或支持服务单的工作流程类型).
为了确保徽章始终是最新的,我有:
$(window).bind('focus load', function ( event ) {
App.pollForNewItems();
});
Run Code Online (Sandbox Code Playgroud)
..虽然这有效,但只有在从缓存加载页面时,轮询"加载"上的新项目才有用.是否有可靠的跨浏览器方式来判断是否正在从缓存加载页面?
javascript jquery javascript-events browser-cache browser-history
问题源于以下问题.我在我的Android设备上使用TiddlyWiki(Classic)SPA,并且通常将它与FireFox及其TiddlyFox扩展一起用于保存.由于某些原因,我希望能够使用其他浏览器来处理(并保存)我的TW,所以我用PHP后端测试它(我的MicroTiddlyServer的分支,但它的代码在这里并不重要,我相信,+ 这个 PHP服务器).
在我的测试中,我注意到虽然保存工作正常,但有时候(至少当PHP服务器由于这种丑陋的Android"优化"(这似乎是不可配置的)从内存中卸载时)从缓存中加载TW并且因此它是在最近的保存之前加载的,而不是之后的加载.
所以,我想要的是检测页面是以普通方式加载还是从浏览器缓存加载.可以通过JavaScript检查吗?
作为一个更糟糕的选择,我可以通过MTS注入一个时间戳并在加载TW时检查它,但我想避免这种复杂化(涉及前端和后端并添加更多的TW文件操作).