简单阅读量统计,两个问题(Chrome 两次请求)

注:chrome会有两次,ff和别的浏览器都是一次,最后今天发现问题在哪里了,chrome的一个插件导致的,各位以后可以把插件禁用了试试,具体哪个插件不一定(我禁用的就和看到的贴子不是同一个)

1、我想用Observers来实现简单的每次访问view_count字段自增1,但是好像没有适用的事件:

Laravel 的 ORM 模型在一些特定的情况下,会触发一系列的事件,目前支持的事件有这些:creatingcreatedupdatingupdatedsavingsaveddeletingdeletedrestoringrestored

2、所以我在controller里写了如下代码,但是每次刷新都自增了2,为什么

public function show(Article $article,Reply $reply)
    {
        $article->increment('view_count', 1);
        return view('mobile.articles.show', compact('article','reply'));
    }
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

我觉得我的chrome有问题,明显F5的时候要卡顿的比ff长,禁用插件可以解决这个问题

4年前 评论
讨论数量: 7

用中间件或者触发一个自定义的事件。

4年前 评论
sunxyw

可以试试awssat/laravel-visits扩展,可以区分ip,我目前用的也是这个,比较方便。https://github.com/awssat/laravel-visits
也可以看看这篇文章(但好像要收费?)021. 统计页面访问次数——awssat/laravel-visits

另外,每次刷新都自增2的话,可以试着检查看看是不是其他地方多写了一行代码什么的。

4年前 评论
wongvio (楼主) 4年前

可以写在 事件系统 ,那样以后维护阅读量统计(比如保存在 redis、mysql 等等)的时候,不需要需改你 show 方法,只要维护这个事件类就行。

4年前 评论
public function show(Article $article,Reply $reply)
    {
        $article->increment('view_count', 1);
        dump($article);  <--------- 这里打印一下 model 看看
        return view('mobile.articles.show', compact('article','reply'));
    }
4年前 评论

记得打开 dump-server

4年前 评论
wongvio (楼主) 4年前

我觉得我的chrome有问题,明显F5的时候要卡顿的比ff长,禁用插件可以解决这个问题

4年前 评论

我的chrome打开控制台 network ,特定页面特定链接会有两次请求, :joy:,稳定复现

4年前 评论
wongvio (楼主) 4年前
licxisky (作者) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!