walinejs / waline

💬 A Simple, Safe Comment System
https://waline.js.org/en/
GNU General Public License v2.0
2.19k stars 379 forks source link

[BUG]文章阅读数统计显示不正常 #157

Closed leirock closed 3 years ago

leirock commented 3 years ago

问题描述 | Describe the bug

Hexo NexT 博客网址,首页文章阅读数统计显示的不是每一篇文章的阅读数,变成了首页的访问数(也就是每一篇的阅读数都一样了);点进文章后,阅读数显示是正常的。Docker 镜像是最新版的。

问题网站 | Website URL

https://blog.dlzhang.com

部署方式 | Deploy Type

njzjz commented 3 years ago

@lei2rock +1 我也有这个问题

YiHui-Liu commented 3 years ago

是Waline.min.js的问题,我将你的网站中Waline.min.js的来源修改为我自己用的之后,恢复正常 image 你可以下载我的Waline.min.js进行对比:https://fox-file.oss-cn-beijing.aliyuncs.com/Waline.min.js

leirock commented 3 years ago

@YiHui-Liu 我用的是 waline 官方最新的 waline.min.js,所以既然出现了问题,这个 waline.min.js 肯定是有问题

njzjz commented 3 years ago

应该是https://github.com/lizheming/waline/commit/b00dc641d1602bcbb94eece73243ba26a432fd7a 的问题,add函数中postVisitCount的参数是location.pathname,而showfetchVisitCount的参数是ids.join() 这就相当于,原来的操作是,add location.pathname & show ids.join(),现在变成了add location.pathname & show location.pathname, 在post页面,location.pathnameids.join()是相同的,但首页是不同的。

解决方案可能有:把location.pathnameids.join()都传到server上,或者干脆只传ids.join()location.pathname 不过我没理解为什么add和show的参数不一样。。。不应该统一吗。。。 另外path ? Visitor.add({serverURL, path}) : Visitor.show({serverURL});这个好像没用,path不可能为空。

lizheming commented 3 years ago

@njzjz path 这块的逻辑有点问题,在于之前根据 @njzjz 反馈的需求把阅读统计和阅读展现放一块了,所以导致了现在 path 没有用了。

阅读统计需要考虑两个场景:

  1. 列表页多文章统计数据展现
  2. 文章页单文章统计数据展现,需要展示当前展现更新后的数据

如你所说把 location.pathname 和 ids.join() 都传过去应该是可以解决问题的,不过我还在思考有没有更好的解决方法。

lizheming commented 3 years ago

@waline/client@0.14.8 已修复该问题,感谢反馈。