我可以从javascript告诉我的页面是否刷新了吗?

时间:2013-09-12 17:42:45

标签: javascript browser-cache

我已经放弃了这一点,但我以为我会出于好奇而在这里发帖。

我称之为“硬刷新”的是您在开发过程中执行的 Ctrl + R Shift + F5 以查看更改。

这会导致浏览器向请求“子”请求添加Cache-Control: max-age=0标头,如图像和脚本等。

如果你正在做你的工作,除了改变的资源之外,你将得到304。 (好的,请参阅注释。这是假设其他验证器是基于浏览器缓存发送的。)

到目前为止,非常好。

问题是我不是直接从页面加载脚本,而是通过load.js,浏览器是否包含Cache-Control标题不一致对这些要求。 Chrome根本不会这样做,Firefox似乎停在了系列的中间。

由于我无法访问当前请求的标头,因此无法知道是否应包含该标头。

结果是,当我更改脚本(load.js除外)时,硬刷新不能可靠地工作,我必须清除浏览器缓存(这有点严厉)

对此有何想法?

2 个答案:

答案 0 :(得分:3)

不幸的是,你无法从JavaScript中检测到硬刷新(无法访问当前加载页面的标题)。

但是,服务器可以从请求标头中判断这是否是硬刷新,因此可以选择合作。例如,服务器可以在响应中包含自定义<meta>标记,或者向<body>添加一个特殊类,然后您的脚本就可以访问此信息。

一旦load.js检测到硬刷新,它就可以将其传播到依赖脚本,例如:将URL参数附加到请求(想想"?t=" + timestamp)。

答案 1 :(得分:-3)

您可以尝试检查localStorage。设置localStorage变量并进行检查。如果它在那里,它不是一个硬刷新,否则,它是一个很难刷新。