0

我必须为 Web 应用程序(基于这些:java、tomcat、jsp、oracle db)创建一个导航菜单,一旦用户登录,它就会出现在所有内容中。关键是几乎每个连接的人都有不同的权限,所以每个人都会看到不同的导航菜单。这是我的第一个 Web 开发项目之一,所以我对事物如何从客户端通信到服务器以及反之亦然的概念不是很强大,因此,最好的做法是什么,但是我的一些考虑有他们的优点和缺点。

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

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

这些东西如何最好地实施?考虑开发成本、维护成本、性能(减少每次点击时对相同信息的请求)、用户感知滞后以及我在该主题上的成熟度尚未看到的其他成本。关于网页设计的书籍有什么推荐吗?

编辑: 我打算使用 jsTree 进行可视化并制作菜单子级别以加载 ajax 请求。

4

1 回答 1

2

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

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

不要预先优化。

于 2012-07-26T16:31:58.383 回答