我需要了解我们如何计算用户打开的特定 visualforce 页面数量的过程。这个问题的原因是看看我是否可以找出用户最常使用的页面并对其进行增强,以便我可以让用户的生活更轻松:)。
我所知道的是我们需要在页面加载时使用某种功能。如果有任何其他方式,我很想理解它。如果您有任何问题,请随时提问,我知道有时我们无法将我们的想法写下来。
我需要了解我们如何计算用户打开的特定 visualforce 页面数量的过程。这个问题的原因是看看我是否可以找出用户最常使用的页面并对其进行增强,以便我可以让用户的生活更轻松:)。
我所知道的是我们需要在页面加载时使用某种功能。如果有任何其他方式,我很想理解它。如果您有任何问题,请随时提问,我知道有时我们无法将我们的想法写下来。
服务器端
不允许 VF 页面控制器(自定义控制器和扩展)运行任何 DML 操作。这背后的原因有点简单——只是导航到给定页面并可能读取一些数据的行为不应该有像数据库更新这样的副作用。因此,如果您正在考虑保存一些数据 - 您可以在这些页面上调用的操作中或在<apex:page ... action="{!doSomething}">
. 但是这个action
参数是不受欢迎的,因为它是这个(理智的)限制的讨厌的解决方法。如果您计划将您的代码提交给 SF 安全审查或 Checkmarx 代码质量审查 - 这将被指出。
客户端
在侧边栏或 VF 页面中安装一些跟踪 javascript。(这个 JS 甚至可以做 RemoteAction 或类似的东西来替代 this action
)。
您还可以查看 Google Analytics(取决于您是否对汇总的前 10 个访问页面感到满意,或者您是否需要每个用户的东西)。
正如@jordan.baucke 提到的 - 尝试在 Salesforce.StackExchange.com 上交叉发布:)
它使用 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 是不明智的。