# 为什么离线优先的账本对小店很重要

- URL: https://ck.abdohoo.app/zh/blog/why-an-offline-first-ledger-matters-for-shops
- Product: Credit Khata (https://ck.abdohoo.app/)
- Section: 概念解读
- Updated: 2026-10-15

> 离线优先的账本会先把每条记录保存在设备上，之后再上传，所以收银台永远不用等网络；而严谨的同步机制能确保记录既不会丢失，也不会重复。

离线优先的账本会先把每一条记录写到店铺自己的设备上，之后只要有网络，再发送到服务器。收银台永远不用等网络，销售也永远不会因为信号中断而丢失，而严谨的同步机制能确保每条记录按顺序到达，而且只到达一次。对一家赊账卖货的店铺来说，这就是一份可以信赖的记录和一份漏洞百出的记录之间的区别。

很多应用只能联网使用：每点一下都要发到服务器，再等它回应。在 Wi-Fi 很好的办公室里，这没问题。但店铺的柜台是另一回事。

## 柜台为什么总是断网

开过店的人都知道这些情况：

- **停电**，路由器跟着断了。
- **手机信号弱**：墙很厚的店里、地下商场里，或者拥挤集市的最里头。
- **流量套餐用完了**，偏偏是在月中。
- **繁忙时段**，整个市场的人同时都在用手机。

这些都不罕见。而且它们往往恰好发生在柜台最忙的时候。

## 只能联网的账本会出什么问题

当网络中断、应用无法保存时，店主只有三个糟糕的选择：

1. **让顾客等着**，身后的队越排越长。
2. **先写在小纸条上“回头再录”**，然后祈祷它会被录进去。有些纸条永远没有被录。
3. **干脆不记**，全靠脑子记。

每一种都会在记录里留下漏洞。漏洞会变成错误的余额，错误的余额又会变成和顾客的争执，而这恰恰是赊账本本来要避免的。

还有一个更隐蔽的问题。如果一笔销售已经发出，但在回应传回来之前网络断了，店主又点了一次保存，只能联网的应用就可能把同一笔赊账销售记两次。结果顾客同一袋面粉被记了两次账。

## 离线优先在实际中意味着什么

离线优先的账本把这个模式反了过来：

1. **先写在本地。** 您一点保存，记录就保存在设备上了。收银台可以接着招呼下一位顾客。
2. **排进队列。** 等待上传的记录在一个有序的队列中排好，屏幕上会显示它们正在等待处理。
3. **在后台同步。** 网络一恢复，队列就会自动上传，先记的先传。
4. **只记一次。** 每条记录都带有一个唯一的标识。如果上传重试，服务器会认出这个标识，不会重复记录。
5. **被拒绝的绝不丢掉。** 如果服务器拒绝了某条记录，例如因为这位顾客后来被删除了，这条记录会被单独放置，等店主查看，而不是被悄悄扔掉。

最后一点很容易被忽视。把保存不了的内容悄悄丢弃的同步，几乎和没有同步一样糟糕。

## 离线做不到的事

坦诚说明局限很重要。有些事需要服务器的回应，只能等联网后再做：

- **顾客的视图。** 店铺立刻就能看到离线记录；顾客要等同步之后才能看到。
- **确认付款申请**，这必须写在服务器上。
- **提醒链接**，由服务器生成。
- 涵盖所有顾客的 **报表**。

一个好的离线优先应用会让收银台持续工作，并且清楚地告诉您哪些内容还在等待。

## Credit Khata 是怎么做的

Credit Khata 就是为信号时好时坏的柜台打造的：

- **收银台应用**（在浏览器中运行，可以安装到电脑或手机上）会把页面、您的语言和顾客列表保存在设备上，所以只要联网用过一次，之后没有网络也能打开。在 **收银** 页面记下的销售会保存到设备上的队列中，每笔都带有自己的标识。
- 收银页面顶部的 **同步状态标签** 会显示 **已全部同步**、有多少笔在等待，或者 **正在同步**，点一下就能查看队列。
- **被拒绝的销售会被单独放置**，而不是丢掉，它们列在 **保存失败** 下，并提供 **全部重试** 和 **丢弃** 两个选项。如果还有销售在排队时退出登录，应用会先询问您，因为这样做会丢弃这些销售。
- **Android 应用** 会把新顾客和所有记录，包括赊账、还款和现金，都保存在手机上，并在后台同步。

![Credit Khata 收银台应用的收银页面，右上角显示“已全部同步”标签](https://ck.abdohoo.app/storage/content/library/web-counter.webp)同步状态标签让您一眼就能看出每笔销售是否都已到达服务器具体的操作步骤，包括某笔销售保存失败时该怎么办，请参阅[离线工作，保持账本同步](https://ck.abdohoo.app/zh/help/work-offline-and-sync)。

## 对任何记账应用都该问的问题

无论您用的是什么，在依赖它之前先测试一下：

1. 打开飞行模式，记一笔销售。能保存吗？
2. 关掉应用再重新打开，仍然保持离线。那笔销售还在吗？
3. 重新打开网络。它会自动上传吗？
4. 在信号时断时续时记一笔销售。它只出现一次，而不是两次吗？
5. 服务器拒绝的记录会怎样？您能看到它吗？

如果一个应用这五项都能通过，那么即使在一个月里网络最差的那天，收银台也能照常工作。

## 归根结底

赊账账本只有完整才有用。在网络不稳定、生意又忙的柜台前，保持完整的唯一办法，就是先记下来，再严谨地同步。这就是离线优先的意义，也是为什么它在小店里比在几乎任何其他地方都更重要。

想了解它如何与电子赊账本的其他部分配合，请阅读[什么是赊账本？电子赊账本与纸质账本对比](https://ck.abdohoo.app/zh/blog/what-is-a-khata-book-digital-vs-paper-register)，或者从[在收银台记一笔赊账销售](https://ck.abdohoo.app/zh/help/book-credit-sale-at-counter)开始。

## Frequently asked questions

### “离线优先”是什么意思？

应用会先把每条记录写到设备上，并把网络当作时有时无的东西。有网络时，记录会在后台上传。

### 离线记录同步时会被记两次吗？

在设计良好的应用中不会。每条记录都带有一个唯一的标识，所以即使上传重试，服务器也能认出来，只记录一次。

### 顾客能马上看到离线记下的记录吗？

要等同步之后。店铺在自己的设备上立刻就能看到；记录到达服务器后，顾客那边的视图才会更新。

### 哪些操作无法离线完成？

任何需要服务器回应的操作，例如确认顾客的付款、生成提醒链接或生成报表。
