AI 生成摘要
博客访客统计异常源于启用 PJAX 后默认追加 URL 时间戳参数,导致访客数被重复计算。根本原因是 PJAX 的`cacheBust` 选项默认为 true。解决方法是在初始化 PJAX 实例时将`cacheBust` 设置为 false。这样既能保留无刷新切页功能,又能避免时间戳干扰数据,确保统计准确。

问题描述

今日发现博客访客统计有问题,原来是因为启用了 PJAX 后,默认会在 URL 后面追加一个时间戳参数 ?t=...,导致统计系统把同一个页面当成了多个不同的页面。

根因

根因其实很明确:PJAX 的 cacheBust 默认值是 true

它的作用是:

  • 每次请求都在 URL 后面追加时间戳
  • 强制绕过缓存
  • 保证拿到最新内容

这在某些场景里有意义,但在博客这种站点里,通常没必要。

解决办法

最直接的办法,就是在创建 PJAX 实例时关闭这个行为:

1
2
3
4
window.pjax = new Pjax({
selectors: ["title", "#pjax-container"],
cacheBust: false,
});

这样之后:

  • PJAX 仍然保留无刷新切页
  • URL 不再自动追加 ?t=...
  • 访客统计也不会被这些时间戳参数干扰