我遇到了单页应用程序的问题,用户没有最新版本,因为他们永远不需要重新加载页面。有什么方法可以通过javascript获取页面首次加载的日期吗?我可以存储我在数据库中更新代码的日期,然后定期检查该日期以查看用户是否需要刷新。我只需要一个日期来比较它。
我以为我可以使用localStorage并在页面加载时加入时间戳,但是如果打开多个选项卡,则会产生问题。如果我尝试将它存储在服务器上的数据库中,我也会遇到同样的问题。
我希望实现的目标类似于谷歌收件箱"有新版本可用,请刷新"我不时会在该页面的底部看到这条消息。
有什么想法吗?
答案 0 :(得分:2)
理想情况下,您需要访问响应标头。但我不相信你能做到这一点。如果你做一些更简单的事情怎么办?您不需要使用localStorage
或Cookie。只需添加一个在加载页面时设置为new Date()
的变量。像
<html>
...
<script>
var pageLoadedOn = new Date()
</script>
</html>
然后,稍后您可以检查pageLoadedOn
哪个应该等于首次呈现页面的时间。这也适用于标签,因为每个页面按标签单独呈现。
答案 1 :(得分:1)
根据您的工作环境,检查时间戳可能不是一个好主意。如果您的用户拥有一台没有RTC的设备(想想:raspberry pi),您可能会感到不幸,并且当他们打开您的网页时,他们的系统时钟可能完全错误(按小时,几天甚至几年)。你会以这种方式得到误报。例如,如果他们的时钟在过去很远,他们会被提示重新加载,尽管有最新版本。当然,这是一个极端的情况。
如果您只是需要知道版本是否已过时,并且您要查询服务器,为什么不在您的javascript中放置某个版本?
var VERSION="1.0.1"; // gobablly accessible variable
或者在html本身,然后用javascript检索它?
<body class="something" data-version="1.0.1">
如果你不喜欢数字和点符号,那么一个简单的整数就足够了:
var VERSION=7; // version 7. Increment for each new release.
甚至是发布时间戳:
var VERSION=1470786198;
然后,当您定期向服务器询问最新版本时,您将与您的版本进行比较。如果您的版本不同,则提示用户重新加载页面。