我可以从javascript中判断我的页面是否被硬刷新了吗?
Can I tell from javascript whether my page was hard refreshed?
>我已经放弃了这个,但我想我会在这里发帖是出于好奇。
我所说的"硬刷新"是指您在开发过程中执行的 Ctrl+R 或 Shift+F5 以查看更改。
这会导致浏览器向请求和"子"请求(如图像和脚本等)添加Cache-Control: max-age=0
标头。
如果你正在做你的工作,你会得到一个304
,除了改变的资源。 (好的,好吧,看评论。 这是假设其他验证器是基于浏览器缓存发送的。
目前为止,一切都好。
问题是我不是直接从页面加载脚本,而是通过load.js
加载脚本,并且浏览器在这些请求中是否包含该Cache-Control
标头不一致。 Chrome根本没有这样做,Firefox似乎在一个系列的中间停止了。
由于我无法访问当前请求的标头,因此无法知道是否应包含该标头。
结果是,当我更改脚本(load.js
除外)时,硬刷新不能可靠地工作,例如,我必须清除浏览器缓存(这有点严厉)。
对此有什么想法吗?
不幸的是,
。您无法检测到来自 JavaScript 的硬刷新(无法访问当前加载页面的标头)。
但是,服务器可以从请求标头中判断这是否是硬刷新,因此可以选择合作。例如,服务器可以在响应中包含自定义<meta>
标记或向<body>
添加特殊类,然后您的脚本将可以访问此信息。
一旦load.js
检测到硬刷新,它就可以通过例如将URL参数附加到请求(想想"?t=" + timestamp
)将其传播到依赖脚本
您可以尝试检查 localStorage。设置一个本地存储变量并检查它。如果存在,则不是硬刷新,否则,它是硬刷新。
相关文章:
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- 谷歌DFP动态广告刷新-是否有回调来确定广告是否已加载
- AJAX/JS:是否可以在没有提交按钮和刷新页面的情况下获取输入文本的值
- KnockoutJs中是否有UI刷新后的回调
- 是否可以肯定刷新 $_SESSION[] 全局变量
- 检查用户是否刷新,返回,关闭浏览器等 socket.io
- jQuery:如何知道页面是否已刷新
- 如何存储元素是否被选中,以便页面在刷新时记住它
- 是否可以将 php 变量分配给 jquery var,然后刷新该 jquery 变量
- 是否可以阻止 Oracle Apex 提交页面,直到用户单击该页面上的刷新按钮
- 在不刷新的情况下更改页面 URL - 是否有跨浏览器解决方案
- 是否可以刷新引导选项卡
- 是否可以在不刷新地图表单的情况下使用 js 发送值
- 是否可以刷新 DIV 而 DIV 中没有另一个页面
- 在 jQuery 中是否可以在不使页面闪烁的情况下自动刷新?就像在脸书中一样
- 我可以从javascript中判断我的页面是否被硬刷新了吗?
- 检测视图模型属性是否在不刷新的情况下发生更改
- 是否可以使用Javascript在页面刷新时随机生成预先确定的链接颜色和悬停颜色
- Gmail是否使用setInterval()或setTimeOut()进行定期刷新
- 刷新页面后是否可以保留表单(html)内容数据