跳到主内容
版本: 1.x

产品同步

WCPOS 会在每台设备上保留您产品的本地副本,因此产品目录的浏览和搜索都是即时的,并且在离线时仍可继续使用。本指南说明产品如何进入设备,以及它们如何保持最新。

v1.10.0 中的变更

v1.10.0 引入了全新的同步引擎。如果您的 POS 版本早于 v1.10.0,请参阅下方的 v1.10.0 中的变更

产品如何进入设备

  • 产品目录预填充在后台运行。 从首次启动开始,POS 就会按计划分小批下载您的产品目录,无需您做任何事情。首批产品到达后您即可开始销售——结账不会等待整个目录下载完成。
  • 您正在查看的内容按需下载。 搜索、按类别筛选或扫描条码时,如果匹配的产品尚未存于本地,会直接获取它们。搜索不再连带拉取无关产品——它只获取您所请求的内容。
  • 更新通过变更检查送达。 产品存入本地后,POS 不会为了确认它是否变化而重新下载它。POS 会轮询一份轻量的变更日志(默认预设为每 60 秒一次),只获取真正发生变化的内容——空闲商店只会返回一个几乎不消耗资源的“无变化”响应。

每批有多大?

默认情况下,POS 每次请求 50 个产品。这不再是一个固定常量——它是由 商店健康 → 性能 中的同步预设设定的两个调节项之一:

预设检查间隔每次请求的记录数
节能5 分钟25
均衡(默认)60 秒50
实时10 秒75

采用小批量是为了保护您的服务器:构建大分页会实实在在地占用服务器时间,在共享主机上还可能拖慢店面或触发速率限制。主机配置一般时请选择节能,多收银台商店配合较强主机时可选择实时。详情参见商店健康

查看下载进度

打开 商店健康 → 数据库,即可按集合查看该设备上有多少条记录、您服务器上有多少条记录,并附有覆盖率进度条。服务器上的数字是服务器实际报告的总数——在 POS 仍在确认该数字期间,该行会显示检查中…,而不是给出一个猜测值。

产品进度条未满只是表示预填充尚未完成;它会继续在后台补齐。如果某个具体产品似乎缺失,请搜索它——这会直接获取该产品。

提示

如果某个集合看起来卡住了,请先在商店健康 → 数据库中该行使用 清除并重新下载,再考虑执行完整的清除所有本地数据重置。

v1.10.0 中的变更

早期版本会在使用过程中逐步下载产品目录:每次搜索或滚动都会拉取另一批产品,并且每 5 分钟运行一次完整轮询。该模式已经淘汰。在 v1.10.0 中:

  • 产品目录通过计划中的后台预填充逐步填满——您无需通过搜索或滚动来促使产品下载。
  • 搜索获取的是与之匹配的产品,而不是任意的下一批产品。
  • 变更检查按您选择的预设间隔运行(默认 60 秒),使用条件请求,而不是固定的 5 分钟完整轮询。
  • 下载进度可在 商店健康 → 数据库 中按集合查看。

开发者可在同步引擎的工作原理中了解完整机制。

常见问题

我需要做什么才能下载我的产品吗?

不需要。产品目录预填充会在后台自动下载您的产品。如果某些产品尚未存于本地,搜索或筛选会立即获取它们,但完成整体下载的并不是日常浏览——而是后台预填充。

产品变更多快能到达 POS?

在默认的均衡预设下,POS 每 60 秒检查一次变更(检查时间会略作随机化,以免多台收银台同时访问服务器)。只有发生变化的产品才会被获取。如果多台收银台需要更快地看到彼此的更改,请使用实时预设。

我在 POS 中看不到所有产品

有几种可能:

  • 后台预填充可能只是尚未完成——请查看 商店健康 → 数据库 中的产品行。
  • POS 默认会隐藏缺货商品。可在产品显示设置中更改此设置。
  • WooCommerce REST API 仅支持标准产品类型(简单型、可变型、分组型、外部型)。自定义产品类型可能不会在 POS 中显示。