我正在读更多的Quora的答案排名算法,并遇到下列功能,我试图扭转工程师提出:跟踪网页内容在页面中浏览次数?
http://blog.quora.com/Improved-Answer-Ranking-Follow-Up
“有新的答案排名,我们不能仅仅着眼于绝对数量的upvotes和downvotes;我们也在考虑一个答案已经收到的关注程度,例如:如果20个人看到答案,并且所有20个人都赞成它,这可能是一个更强的质量信号比如果成千上万的人看到了一个答案,但只有100个人满意。“
Quora的小背景:它与布局中的Stack Exchange非常相似。有人发布了一个问题,人们回答了答案,并且该网站将所有答案排列/显示在一个页面中。
鉴于所有的答案都编译成一个页面,Quora会如何跟踪每个单个答案获得的视图数量?
潜在的假设:
- 每个人的答案被存储在数据库中,与它有多少次被取出一个 计数器在一起。
- 当用户第一次访问该页面时,只有前几个答案是 从数据库中获取并显示在页面上。当用户向下滚动 时,通过额外的GET 请求动态获取更多答案。
- 每次从数据库中提取答案时,数据库 计数器都会增加,从而跟踪查看者看到答案 的次数。
关注这种方法:
- 每一个GET请求,现在需要数据库的更新,这将 显著恶化数据库工作负载。
- 用户加载 页面后,用户不用一次性批量提取10-20个答案,而是每次输入012-即可获取1-2个答案,用户可滚动到页面底部。这会加重 延迟和用户体验,因为用户必须保持 等待显示其他内容。
这些真正的担忧是否会随着规模而爆发?或者他们可以被管理?
感谢您的教育猜测。你有没有链接到资源如何实现**“通过检查滚动事件,如果某些元素已经变得可见。”** 我的幼稚REST的理解是你发送数据到客户端的GET请求,除非他们向您发送另一个GET/PUT/POST请求,否则您将不知道数据如何消耗。 REST接口如何收集有关**滚动事件的信息**以及**“某些元素已变得可见”**? – RvPr
那么,任何现场滚动库/教程将展示如何识别用户何时到达某个元素。一旦客户端脚本知道,它可以发布到一个“查看”API。在没有持续连接的情况下(例如websocket),它将更有可能分批发布,而不是每个单独的视图。实际的服务就像a/views资源,所以客户端发送到/ views。该请求可能会包含一些关于用户,客户端平台和查看上下文的详细信息,例如包含网页网址。 – mahemoff