2013-03-02 39 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