有没有一种方法可以检查页面是否从浏览器缓存加载?

9
这个问题的起源是:我在我的安卓设备上使用 TiddlyWiki (Classic) SPA 并且通常使用 FireFox 和它的 TiddlyFox 扩展进行保存。由于某些原因,我想要能够使用其他浏览器来工作(和保存)我的 TWs,所以我正在使用 PHP 后端进行测试(我的 MicroTiddlyServer 分支,但我相信这里不重要 + this PHP 服务器)。
在我的测试中,我注意到尽管保存正常工作,但有时(至少当 PHP 服务器由于这个丑陋的 Android "优化" 被卸载时,似乎不可配置),TW 会从缓存中加载,因此它加载的是最新保存之前的版本。
所以,我想要检测页面是以普通方式加载还是从浏览器缓存加载。是否可以通过 JavaScript 检查这一点?
作为更糟糕的选择,我可以通过 MTS 注入一个时间戳,并在加载时在 TW 上进行检查,但我想避免这种复杂性(它涉及前端和后端,并添加了更多的 TW 文件操作)。

1
看起来有重复的,你检查过 https://dev59.com/v2HVa4cB1Zd3GeqPr_VU 和 https://dev59.com/7XVC5IYBdhLWcg3wixs0 吗? - Paulo Prestes
我最终添加了适当的头部到PHP部分,以便页面始终无缓存地提供。 - YakovL
2个回答

1

随着新的资源计时Level 2规范,您可以使用传输大小属性检查页面是否从缓存加载:

var isCached = performance.getEntriesByType("navigation")[0].transferSize === 0;

规范: https://www.w3.org/TR/resource-timing/#dom-performanceresourcetiming-transfersize

此规范说明了如何测量和记录网络资源的传输大小。这个指标可以帮助开发人员更好地了解他们网站的性能,以及何时需要优化资源加载。

0
如果您在Chrome中使用远程调试器,您可以查看网络请求并确定您的项目是否被缓存。Firefox似乎也有一个远程调试器。

不幸的是,我正在寻找一种通过JavaScript实现此目的的方法(以便我可以通知用户),最好无需从后端进行任何额外的操作(我正在学习是否可能)。 - YakovL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接