要保存在内存缓存或数据库中的数据

时间:2011-06-10 20:12:02

标签: java

我遇到了以下问题: 我有一个Web应用程序,其功能是:用户需要查看分配给他的文档。用户查看文档后,他会将文档标记为“已审核”。分配给用户的文档可能在1000年内。将有一个选项'未审核'文件。因此,当用户点击它时,他将获得所有未经审核的文件(可能是1000个)的列表。例如,他获得Doc1,Doc2,Doc3,Doc4,Doc5,Doc6,Doc7,Doc8,Doc9,Doc10。他从Doc1开始。他可能/可能不会审核Doc1,然后转到Doc2进行审核。现在他应该可以用'next'/ 列表中文档的“上一个”选项。现在问题是 - 如果我正在审查Doc5并且我想要查看之前的文档(Doc4已经过审核),则需要将其保存在该审核会话的缓存中,以便它可以返回到之前的版本审查文件。如果我将其保存在缓存中,直到现在访问的所有文档都可以在1000s内运行,那么如果有大量用户在共同的文档集上工作,则存在内存错误的可能性。我如何解决这个问题。

谢谢,

更新:

我认为我应该更清楚它应该如何运作 - 每当用户进入'未审核'会话时,他都会获得所有未经审核的文件(例如,来自Doc1-10的10个文件)。现在,他应该能够通过'这10个文件(下一个/上一个)进行导航,而不管那些在“未经审核的会话”中被标记为“已审核”的文档。假设在浏览这些文件的同时,他将Doc 2标记为“已审核”并且他从未经审核的会话中退出,并且下次再次选择“未经审核”他应该获得除Doc 2之外的9个文档。但是,如果他是仍处于未经审核的会议中,他将Doc 3标记为已审核,然后转到Doc 4,即使已经“审核”,他也应该可以返回Doc 3。我们是否为在“未审核”会话中选择的这些文档保留了一个唯一的会话,以便我们可以在未审核的会话期间通过'它进行导航

1 个答案:

答案 0 :(得分:3)

保留一个滑动缓存窗口。请看下面的详细信息

..., 34, 35, [36, 37, <38>, 39, 40], 41, 42, ...

(brackets indicate the cache window, the currently viewed item is #38)

当下一个人按下时,窗口会更新

..., 34, 35, 36, [37, 38, <39>, 40, (41)], 42, ...

(download #41 in the background while the person browses #39, the current item)

这将导致不会减慢小范围更改,并且如果此人在特定文档上稍微滞后,则会隐藏下载时间。它还允许您平衡窗口大小和可用内存。