从服务器的角度来看,导航器如何实现最佳?

时间:2012-07-26 13:41:39

标签: servlets navigation oracle10g tomcat6

我必须为Web应用程序(基于这些:java,tomcat,jsp,oracle db)创建一个导航器菜单,一旦用户登录,它将出现在所有内容中。重点是几乎每个人都连接,不同的权限,所以每个人都会看到不同的导航菜单。这是我的第一个网站开发之一,所以我不太了解从客户端到服务器的通信方式的概念,反之亦然,因此,最好的做法是什么,但是我的一些考虑因素有他们的利弊。

  • 制作过滤器以在每个请求中加载菜单。这会查询数据库,这对它来说是痛苦的,因为在极少数情况下,事情会发生变化(或者至少不会经常发生变化);但是,当有变化时,它会立即加载。
  • 制作iframe以加载菜单一次并控制第二个iframe(我认为这是最不鼓励的,但仍然是一个选项,并且具有每次点击时不向服务器发出相同请求的优点)。当有更改时,重新加载将加载新数据。
  • 使菜单保留为会话中的对象。这将在用户登录后查询数据库。将在每个连接中加载更改(或通过重新加载按钮)。但是这种方法会把东西放在服务器内存中,我认为这是一个更糟糕的想法。 (不确定我在这说什么,我错了吗?)

正如我所说,我太新了,所以我不知道我能做些什么。据我所知,我无法将文件写入客户端(例如xml),因此它是菜单的数据源并每天将其删除。我可以在服务器中用数据写一个文件,所以我不需要从db查询(但这仍然是对服务器的请求),但这会带来其他问题,数据的更改不会刷新(除非是当然,我为它做了一些需要更多时间和更多事情的东西)并且我不知道这是否比访问数据库更快。

这件事情如何最好地实施?考虑开发成本,维护成本,性能(减少对每次点击的相同信息的请求),用户感知滞后以及我在此主题上尚未看到的成熟度。有关网页设计的书籍的任何建议?

修改 我打算使用jsTree进行可视化,并使用菜单子级加载ajax请求。

1 个答案:

答案 0 :(得分:2)

我会忘记第二个选项并使用最简单的无状态选项:第一个选项。数据库很快!

如果看起来这需要花费太多时间或者对数据库施加太多负载(但我怀疑它:加载用户的文件应该非常快),你总是可以使用第三个选项。当然它会在会话中存储菜单(或只是权限),但是如果需要,也可以将会话写入磁盘或数据库。

不要预先优化。