0

因此,我必须借助 CQ5(基于 OSGi、Sling、JCR 内容存储库的 Java CMS)开发一个 Web 组件

这个组件应该做以下事情:从用户那里收集三个问题的答案,然后根据用户的这些答案,将来自数据库的响应提供给用户(可以说它是一个计算器)

第一个问题有 5 个答案变体,第二个问题有 5 个变体,第三个问题也有 5 个变体。

但问题是,如果用户选择了选项 1 作为第一个问题的答案,则第二个问题的可能答案数量将减少 - 只剩下 3 个可能的答案。

例如,用户有问题:您来自哪个国家/地区?你来自哪个州?你来自哪个城市?

如果用户对第一个问题回答加拿大,那么他将能够仅选择加拿大各州作为对第二个问题的回答。

因此,当用户更改表单时,应通过 ajax 更新其中的数据

所以,问题是:一次从数据库中获取所有数据更好(没有你看到的那么多),还是在每个“表单更改事件”上向数据库发出请求更好? ? 或者,它没有任何区别?

在我看来,从需要编写的代码量的角度来看,第二种变体更好,但从性能的角度来看,第二个变体更好吗?

4

2 回答 2

3

应避免过早的优化。我会采用多请求方法。就像你说的,它会让应用程序更干净。然后,只有当它被证明太慢时,您才可以考虑缓存或预先加载该数据。

关于过早优化有很多争论——一般的观点是在你证明你需要它之​​前避免它!

于 2013-01-25T09:06:20.893 回答
1

像往常一样:“这取决于”。对于您的州示例,如果它仅限于北美,则预加载所有州可能会很有用。一旦您的国家/地区列表增加并且州的数量也随之增加,最好只onChange从底层数据存储中获取所需的州。

我也根据人数做出这个选择

  1. 用户可以选择的可能性(世界上只有少数几个国家或全部约 200 个国家?)
  2. 第二个选择框中的项目数量
  3. 如果用户应该能够在第二个选择框中看到不匹配的项目(如果项目仅在客户端被删除,没有 AJAX,只是普通的 JS)
  4. 所需的性能(可以延迟加载第二个盒子的可能性还是需要接近即时?)

评估这些点通常会给你一个很好的经验法则。对于具有 3*5 可能性的实际情况,从数据库中预加载所有可能性并在程序代码中进行过滤似乎是一个合理的选择。

于 2013-01-25T09:05:37.757 回答