如何使用JavaScript来检测我是否在缓存页面上

Jam*_*een 21 javascript

我想从缓存中显示很长一段时间,我希望页面渲染与从缓存加载页面略有不同.有没有一种简单的方法可以用JavaScript来确定这一点?

Jam*_*een 16

我从上面给出的答案"丹尼尔"开始,但我担心,由于连接速度慢,我可能遇到一些延迟问题.

这是最终对我有用的解决方案.在服务器端,我添加了一个cookie refCount并将其值设置为0.在java脚本中的文档加载时,我首先检查refCount然后递增它.检查refCount是否大于1时,我知道页面已缓存.因此,这就像一个魅力.

谢谢大家带领我这个解决方案.

  • 我自己也用过同样的方法.我在我的博客上写了详细的描述:http://monket.net/blog/2010/02/detecting-when-a-page-is-loaded-from-the-browser-cache/ (5认同)

Dan*_*iel 14

您可以这样做的一种方法是在页面中包含页面生成的时间,然后使用一些javascript将本地时间与页面生成时间进行比较.如果时间与阈值不同,则页面来自缓存.问题是如果客户端计算机的时间设置不正确,尽管您可以通过使客户端在请求中包含其当前系统时间来生成页面然后将该值发送回客户端来解决此问题.


Kna*_*ģis 11

使用新的 Resource Timing Level 2 规范,您可以使用传输大小属性来检查页面是否从缓存加载:

var isCached = performance.getEntriesByType("navigation")[0].transferSize === 0;
Run Code Online (Sandbox Code Playgroud)