You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel基于Session统计文章浏览量的代码工作原理咨询

这段Laravel浏览量统计代码的工作原理

这段代码核心是实现同一用户单次会话内,同一篇文章仅统计一次浏览量,避免用户反复刷新页面导致浏览量虚高,逐行逻辑解析如下:

  • 第一行 $viewed = Session::get('viewed_article', []);
    Laravel的Session用于存储单个用户会话周期(默认浏览器关闭前、或者未超过配置的会话有效期都算同一会话)的临时数据,这行代码就是从当前用户的会话数据中读取viewed_article字段的内容,这个字段存的是用户已经访问过的文章ID列表,如果读取不到就默认返回空数组。
  • 第二行 if (!in_array($article->id, $viewed))
    判断当前访问的文章ID,是否不在刚才拿到的已访问文章ID列表里,也就是判断用户是不是第一次在当前会话中访问这篇文章。
  • 第三行 $article->increment('views');
    如果是首次访问,就直接给当前文章对应数据库表的views字段(也就是存储浏览量的字段)数值加1,不用手动查库再更新,Laravel的increment方法封装了这一步操作。
  • 第四行 Session::push('viewed_article', $article->id);
    把当前文章的ID追加到会话里的viewed_article列表中,这样用户后续再刷新或者重新进入这篇文章的页面,判断的时候就会识别到已经访问过,不会再重复统计浏览量。

这个实现方式逻辑简单、性能消耗低,适合普通博客、资讯站这类对浏览量统计精度要求不高的场景。缺点是统计粒度比较粗,用户清除浏览器Cookie、换设备、或者会话过期后再次访问,还是会重新统计一次浏览量。

内容的提问来源于stack exchange,提问作者chu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:06:04