有沒有一種很好的方法可以告訴給定用戶在Web應用程序的給定頁面上花費多長時間,準確度大約爲一分鐘?如何判斷每個用戶訪問每個頁面的時間?
我想到的一種解決方案是使用Javascript每分鐘打一次web服務,並跟蹤數據庫中的命中。但我想知道是否有更好的方法...有沒有辦法通過Google Analytics來實現這一點?如果是這樣,怎麼樣?
有沒有一種很好的方法可以告訴給定用戶在Web應用程序的給定頁面上花費多長時間,準確度大約爲一分鐘?如何判斷每個用戶訪問每個頁面的時間?
我想到的一種解決方案是使用Javascript每分鐘打一次web服務,並跟蹤數據庫中的命中。但我想知道是否有更好的方法...有沒有辦法通過Google Analytics來實現這一點?如果是這樣,怎麼樣?
首先,我同意關於分析軟件的評論,並且您應該仔細研究這些內容。
我不知道該怎麼好這樣的工作,我絕對不相信這是去的最佳途徑,但如果你做這個客戶端是死心塌地,你也許可以嘗試類似:
var start = new Date().getTime();
window.onbeforeunload = function(){
var end = new Date().getTime();
alert(parseInt(end - start, 10)/60000 + " minutes");
};
這裏的想法是在用戶訪問您的頁面後保存當前時間。一旦他們離開,onbeforeunload事件應該觸發並運行該函數來計算他們在頁面上花費的時間。我想你可以在中加入一個ajax調用(或其他) a 同步調用來節省總時間。
注:會的jsfiddle阻止這些事件,但你仍然可以通過打開控制檯中看到錯誤日誌的輸出。一旦打開控制檯,只需點擊Run
即可觸發活動。
編輯:
請參閱@伊恩的評論下面關於使用onbeforeunload
事件的內部的AJAX請求。
「beforeunload」事件中的AJAX請求不是跨瀏覽器一致的,並且是最好/唯一的幫助他們與**同步**請求。當頁面離開時,瀏覽器放棄打開的AJAX請求。所以,當你在'unload'事件之前的'beforeunload'事件中啓動一個事件時,很有可能請求在其生命週期中沒有足夠的時間到達服務器 – Ian
感謝您指出@伊恩,就像我上面所說的那樣......我不太確定它會如何工作。你完全正確,但他們需要同步。 – Chase
我知道,我只是想解釋會發生什麼:)對我來說,OP所要求的東西只需要與服務器通信。服務器不應該有迴應。所以如果AJAX請求可以在瀏覽器中止瀏覽器(這意味着瀏覽器不會處理它的響應)時離開瀏覽器,那麼這應該是很好的。在我工作的一個項目中,我們在'beforeunload'發送了一個AJAX請求,並且我們需要它是同步的。一些可能有用的東西就是對它進行超時(我們做了1000毫秒),就像jQuery'$ .ajax'允許的那樣。 – Ian
對於那些有興趣的人,我已經將一些工作放到了一個小的JavaScript庫和服務中,這個時間是用戶與網頁交互的時間。它實際上正是Chase在他/她的回答中所描述的!但是,它具有更準確(但並不完美)跟蹤用戶實際與頁面進行交互的時間的額外好處。它忽略了用戶切換到不同標籤頁,閒置,最小化瀏覽器等的時間。
編輯:我已更新示例以包含當前的API使用情況。
其用法的例子:
包括在你的頁面:
<script src="http://timemejs.com/timeme.min.js"></script>
<script type="text/javascript">
TimeMe.initialize({
currentPageName: "home-page", // page name
idleTimeoutInSeconds: 15 // time before user considered idle
});
</script>
如果你想自己的時間報告給後端:
window.onbeforeunload = function(){
xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","ENTER_URL_HERE", false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var timeSpentOnPage = TimeMe.getTimeOnCurrentPageInSeconds();
xmlhttp.send(timeSpentOnPage);
});
TimeMe.js還支持通過websockets發送計時數據,因此您不必嘗試強制完全同步http請求進入document.onbeforeunload
事件。
我想這樣的指標不會來自頁面本身,而是來自頁面被請求時與下一頁被請求時的比較(可以完全在服務器端完成)。 (假設如果沒有請求後續頁面,那麼這是一個放棄的會話。) – David
谷歌分析可能是要走的路。特別是在頁面分析中 – karthikr
https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingTiming – epascarello