问题产生的原因如下。我在安卓设备上使用TiddlyWiki(经典)SPA,通常将其与FireFox及其TiddlyFox扩展一起使用以进行保存。出于某些原因,我希望能够使用其他浏览器处理(并保存)我的TW,所以我正在用PHP后端(我的MicroTiddlyServer分支,但我相信它的代码在这里并不重要,+这个PHP服务器)测试它。
在我的测试中,我注意到虽然保存工作很好,但有时(至少当PHP服务器由于这种丑陋的Android"优化"而从内存中卸载时,这似乎是不可配置的)TW是从缓存中加载的,因此它是在最近一次保存之前加载的,而不是在之后。
所以,我想要的是检测页面是以普通方式加载还是从浏览器缓存加载。是否可以通过JavaScript进行检查?
作为一种更糟糕的选择,我可以通过MTS注入时间戳,并在加载时在TW中检查它,但我希望避免这种复杂性(这涉及前端和后端,并增加了更多的TW文件操作)。
使用新的资源定时级别2规范,您可以使用传输大小属性来检查页面是否从缓存加载:
var isCached = performance.getEntriesByType("navigation")[0].transferSize === 0;
规格:https://www.w3.org/TR/resource-timing/#dom-性能资源定时转移大小
如果您在chrome中使用远程调试器,您可以查看网络请求并确定您的项目是否被缓存。Firefox似乎也有一个远程调试器。