iOS 和 PHP:检查服务器是否有更新/数据库是否有变化

iOS and PHP: Check if server has updates/ database has changes

背景

我有一个 iOS 应用程序可以从服务器检索数据并使用 NSFileManager 将其写入文件,这样用户就不必在每次访问时都从服务器重新检索数据页。他们正在检索的数据可能会不时发生变化,因此我想在发生变化时更新应用程序文件中的数据。

我正在为我的后端 Web 服务使用 php 个页面。

问题

检查我的数据库中的数据是否已更改以便我知道我应该更新应用程序中的数据的技术是什么?我能想到的唯一方法是创建一个 php 页面来检查数据是否与我存储的不同,但这种做法违背了将信息保存到应用程序内文件的目的。我想尽量减少用户与服务器通信的时间,因为在用户没有服务的情况下,我仍然希望有他们可以在应用程序中看到的有效数据。

如果您不完全理解我要实现的目标,请提出问题。谢谢!

在这种情况下,您需要在服务器上定义您的版本 ID,并将其存储在应用程序的某个位置。例如,当您在数据库中进行一些更改或服务器端有更新时。只需从服务器更改该版本 ID。

在 IOS 方面,您需要检查该版本 ID。如果 ios 发布 ID 低于服务器 ID,则更新 ios 本地存储中的数据库。

例如,如果您想列出最近添加的餐厅,您可以:

  • 将最近的餐厅 ID 存储在 IOS 上,并在您要检查更新时将其发送到服务器。
    • 如果数据库中的 ID 不相同,则必须更新客户端。
    • 如果相同,您可以只发送状态为 304(未修改)的响应,这样可以最大程度地减少交换的数据量。

如果你想缓存计算数据,比如用户评分最高的 10 家餐厅,你可以:

  • 存储 10 个餐厅 ID 的哈希值,并在您要检查更新时将其发送到服务器。
  • 服务器重做请求并计算前 10 个的当前哈希值。
    • 如果哈希不同,请更新您的客户端
    • 如果哈希值相同,则发送状态为 304 的响应

注意 : 如果服务器端的计算成本很高,您可能需要考虑一种更聪明的方法来检测数据变化。