2013-03-02 40 views
1

我有一个静态页面(静态,我的意思是HTML,CSS和JavaScript固定在页面上)。区分第一次下载的页面和同一页面的所有后续下载

在服务器端,我可以告诉(基于服务器端会话信息)这是否是特定用户首次加载页面。现在,基于这些细节,我想通过设置响应头中的某些信息(例如,在响应头中设置某些内容),以便页面上的JavaScript函数可以根据这是用户的第一次执行某些操作已登陆此页面。

实际服务页​​面的服务器是Nginx,处理逻辑,会话等的服务器是Tornado。所以大概我需要在龙卷风中做些事情,然后指示nginx提供静态页面。

这是可行的吗?如果是这样,那么最强大的方法是什么?

回答

4

您可以通过cookies实现此目的:http://www.quirksmode.org/js/cookies.html 通过cookie,您可以发送特定的cookie,并在第一个视图上发送响应标头。然后,每次页面加载,有你的JavaScript检查具体的cookie

或者使用本地存储:http://diveintohtml5.info/storage.html 类似cookie的方法,但在第一种观点的JavaScript存储在本地存储一个键值对,并检查每次页面加载时都会受到影响。沿着这些路线的东西:

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

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

+0

我曾考虑过上述两种方法,但两者的主要问题是(因为涉及客户端javascript),用户可以自行修改cookie或本地存储变量,这可能会影响我要执行的功能。如果javascript要检查的东西直接来自服务器,那么用户很难轻易影响行为。 – skyork 2013-03-02 21:25:49

+0

问题在于,您希望在客户端处理的任何行为都可以通过用户进行操作。 – SReject 2013-03-02 21:28:04