情景
我正在构建一个 Web 应用程序,可以在其中动态生成报告(基于从 SQL 数据库检索到的信息)。这些报告将包含图表,这些图表也可以即时生成。因为这些图表包含敏感信息,所以使用 3rd 方图表 API(即:Google Charts)是不可能的。
问题
我正在使用 PHP 的 GD 扩展来生成这些图表。这很慢。缓存是要走的路,但问题是有大量可能的图表;尽管我相信大多数要求的图表都是以前生成的。
部分解决方案
图表是使用数据和其他信息(大小、图表类型等)生成的。因为这些可以唯一标识一个图表,所以我根据这些信息给每个图表一个唯一的哈希并保存它。现在我可以计算一个新请求的图表的哈希值,看看我是否已经渲染了它。
问题在于发生碰撞。为了解决这个问题,我正在考虑将哈希和数据的序列化形式保存在 SQL 表中。然后,如果我有缓存命中,我仍然会比较数据本身。
我过度设计了这个?(这是一个 160 位哈希 - SHA1)
有没有更好的方法来处理这个?