我们在 ASP.NET 应用程序中创建了一组捕获所有搜索页面。我们有一个初始搜索页面、一个 SERP,然后是一个单项详细信息页面。所有 3 个页面都有一个搜索栏,其中包含初始条件、更多条件和高级条件选择。
当我们将所有条件放在一起时,除了主搜索框外,我们还有 20 个不同的条件参数(从价格、价格、销售项目、创建日期等),然后是三个参数 ID 集合。这些集合来自我们的用户可以搜索的制造商、产品线和类别列表。所以我们有这个固定的 20 个字段集,然后是 3 个集合,它们可能有一个或两个制造商,或者可以为他们选择并希望搜索其复选框的行保存 100 个 Guid 的集合。
在我们的旧系统中,我们有一个单一的表单解决方案,我们只是回发并将所有内容提交给我们的业务对象,将其传递给返回结果的方法。在这个新表单中,我们需要逐页提交结果并保持这个标准。我们试图找出保存数据的最佳方法,当我说最好时,我的意思是最有效的。
Querystring - 这不适用于 3 个集合的大量 Guid 值集合。
Session - 我们将创建一个标准对象并将其存储在 Session 中。当它们从一个页面移动到另一个页面时,我们可以将其拉出。在我们的高峰期,我们可能有 200-300 人同时使用服务器,搜索是我们最常用的形式。我担心所有这些会话变量的性能。
数据库 - 我们正在考虑将此条件对象序列化并存储到数据库中(SQL Server 2k5),并且用户将始终在数据库中具有当前搜索或最后搜索。这消除了 Session 解决方案中的一些 Web 服务器负载,但我担心这种对象加载、序列化、数据库往返和卸载会减慢表单速度并影响用户体验。
我正在寻找有关哪种方法对我们最有效的建议,或者是否存在我忽略的公认最佳实践或模式。