Javascript 区分页面的首次下载和同一页面的所有后续下载

Javascript 区分页面的首次下载和同一页面的所有后续下载,javascript,nginx,http-headers,tornado,Javascript,Nginx,Http Headers,Tornado,我有一个静态页面(静态,我的意思是html、css和javascript固定在页面上) 在服务器端,我可以判断(基于服务器端会话信息)这是否是特定用户首次加载页面。现在,基于这个细节,我想向前端发送信号(例如,通过在响应头中设置一些东西,可能吗?),以便页面上的javascript函数可以根据用户是否第一次登录此页面执行一些操作 实际为页面提供服务的服务器是Nginx,处理逻辑、会话等的服务器是Tornado。所以我大概需要在tornado中做些什么,然后指示nginx交付静态页面 这可行吗?如

我有一个静态页面(静态,我的意思是html、css和javascript固定在页面上)

在服务器端,我可以判断(基于服务器端会话信息)这是否是特定用户首次加载页面。现在,基于这个细节,我想向前端发送信号(例如,通过在响应头中设置一些东西,可能吗?),以便页面上的javascript函数可以根据用户是否第一次登录此页面执行一些操作

实际为页面提供服务的服务器是Nginx,处理逻辑、会话等的服务器是Tornado。所以我大概需要在tornado中做些什么,然后指示nginx交付静态页面


这可行吗?如果是这样的话,最可靠的方法是什么?

您可以通过cookie实现这一点: 使用cookies,您将在第一个视图上发送带有响应头的特定cookie。然后每次加载页面时,让javascript检查特定的cookie

或使用本地存储: 与cookie方法类似,但在第一个视图中,让javascript在本地存储中存储一个key=value对,并在每次加载页面时进行检查。大致如下:

(function () {
    window.onload = function () {
        if (localStorage.getItem("SeenBefore")) {
            // Not first time viewed
        } else {
            localStorage.setItem("SeenBefore", true);
            // First view
        }
    }
}())

另一个选项是,在服务器端,您可以在第一次查看页面时设置会话变量,然后在每次用户发送页面请求时检查agianst。这也可以通过cookies实现。

您可以通过cookies实现: 使用cookies,您将在第一个视图上发送带有响应头的特定cookie。然后每次加载页面时,让javascript检查特定的cookie

或使用本地存储: 与cookie方法类似,但在第一个视图中,让javascript在本地存储中存储一个key=value对,并在每次加载页面时进行检查。大致如下:

(function () {
    window.onload = function () {
        if (localStorage.getItem("SeenBefore")) {
            // Not first time viewed
        } else {
            localStorage.setItem("SeenBefore", true);
            // First view
        }
    }
}())

另一个选项是,在服务器端,您可以在第一次查看页面时设置会话变量,然后在每次用户发送页面请求时检查agianst。这也可以通过使用cookie来实现。

我考虑了上述两种方法,但这两种方法的主要问题是(因为涉及客户端javascript),用户可以自己修改cookie或本地存储变量,这可能会影响我想要执行的功能。如果javascript要检查的东西直接来自服务器,那么用户不太可能轻易影响行为。问题是,您希望在客户端处理的任何行为都可以通过用户进行操作。我考虑了上面两种方法,但两者的主要问题是(因为涉及客户端javascript),用户可以自己修改cookie或本地存储变量,这可能会影响我想要执行的功能。如果javascript要检查的内容直接来自服务器,则用户不太可能轻易影响行为。问题是您希望在客户端ca上处理的任何行为n可以通过用户进行操作。