我需要了解如何计算用户打开的特定visualforce页面的数量的过程。这个问题的原因是看看我是否可以找出用户最常使用的页面并加强它以便我可以让用户更轻松地生活:)。
我知道我们需要在加载页面时使用某种功能。如果有任何其他方式,我很想了解它。如果您有任何疑问,请随时提出问题,我知道有时候我们无法写下我们想到的东西。
答案 0 :(得分:0)
服务器侧强>
不允许VF页面控制器(自定义控制器和扩展)运行任何DML操作。这背后的原因有点简单 - 只是导航到给定页面并且可能读取一些数据的行为不应该有像DB更新这样的副作用。因此,如果您正在考虑保存一些数据 - 您可以在这些页面或<apex:page ... action="{!doSomething}">
中调用的操作中执行此操作。但是action
参数是不受欢迎的,因为对于这个(理智的)限制来说这是一个讨厌的解决方法。如果您计划将代码提交至SF安全审核或Checkmarx代码质量审核,则会指出这一点。
<强>客户端强>
将一些跟踪javascript安装到侧边栏或VF页面中。 (这个JS甚至可以做RemoteAction或类似的东西作为这个action
的替代品。)
您还可以查看Google Analytics(取决于您是否可以使用汇总的前10个访问过的网页,或者每个用户需要一些内容)。
正如@ jordan.baucke所提到的 - 尝试在Salesforce.StackExchange.com上进行交叉发布:)
答案 1 :(得分:0)
它简单易用JavaScript,全局变量,对象和一些ajax调用(RemoteAction)。示例代码为:
<script src="http://code.jquery.com/jquery-1.10.2.min.js"/>
<script>
var j$ = jQuery.noConflict();
j$(document).ready(function(){
var userID = '{!userInfo.getUserID}'; //Gets user ID
Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.ClassName.MethodName}', //Method where you increment the click counter stored in the record for that object
userID,
//Function on completion
);
});
</script>
但是,我建议在页面加载时不要做任何DML / SOQL。