我获取JSON结果并将它们解析为模型并将它们存储在数据库中。我需要检查结果是否是新插入的,或者是否已更改以更新现有数据。考虑一下我正在根据URL 列表获取 JSON 结果。由于可能有很多 URL,我不想根据数据库检查所有数据。相反,我想根据 URL 对结果进行哈希处理,并将给定 URL 的这些哈希值存储在数据库中。下次当我根据该 URL 获取 JSON 结果时,我想再次对其进行哈希处理,检查该值是否与上次哈希值不同,如果不同,则解析整个模型并将其与数据库进行比较,如果没有不同,则跳过。这是正确的做法吗?还有更好的选择吗?
如果可以实现这样的算法,考虑到JSON结果不是很大,我应该使用什么哈希函数。我知道根据 MSDN, GetHashCode对于 C# 中的字符串并不一致,据我所知,他们甚至在调试模式下使用 BuildNumber来使开发人员避免保留 GetHashCode 方法的结果。我计划使用 MurMur,但了解到 MurMur 适用于大型数据集,但不适用于数百字节的信息。
HTTP 协议中已经存在一种专门为此目的而设计的机制: 和ETag响应Last-Modified标头。如果您可以控制正在使用的端点并且它们遵循最佳实践并使用这些标头,那么这将起作用。
如果情况并非如此,那么您可能需要在客户端进行计算,正如您已经暗示的那样,通过计算内容的校验和,然后与之前的校验和进行比较。MD5是一种非常快的算法,通常用于此目的。例如Amazon使用它来计算ETagS3资源的标头。
| 归档时间: |
|
| 查看次数: |
2842 次 |
| 最近记录: |