AI 生成摘要
博客访客统计异常是因为启用 PJAX 后,默认开启 `cacheBust` 导致 URL 自动追加时间戳参数,使系统将同一页面计为多次访问。解决方案是在初始化 PJAX 时将其设置为 `false`,既能保持无刷新切页功能,又能避免统计数据因时间戳干扰而出现偏差。

问题描述

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

根因

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

它的作用是:

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

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

解决办法

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

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

这样之后:

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