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

har*_*rpo 6 javascript browser-cache

我已经放弃了这一点,但我想我会因为好奇而在这里发帖.

我称之为"硬刷新"的是您在开发过程中所做的Ctrl+RShift+F5看到您的更改.

这会导致浏览器向Cache-Control: max-age=0请求添加标头以及图像和脚本等"子"请求.

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

到现在为止还挺好.

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

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

结果是,当我更改脚本(除了load.js)之外,硬刷新不能可靠地工作,并且我必须例如清除浏览器缓存(这有点笨拙).

有什么想法吗?

Jon*_*Jon 3

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

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

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