我有一个网站,客户可以登录并购买特定范围内的产品(根据客户编号)。导航栏有产品类别的下拉列表,但没有显示任何没有产品的地方。
此时,在每个页面上查询数据库以填充产品类别菜单,但这样效率很低。我现在想知道“允许”产品列表是否应该在会话开始时存储在cookie或会话变量中。
根据我从其他问题中收集的内容,通常会使用会话变量,但是他们警告不要在会话变量中存储大量数据。在这种情况下,我会为每个用户存储一个可能很大的产品列表,那么cookie会更好吗?我不会将产品列表列为特别敏感,我会在下订单之前进行服务器端检查。或者我应该坚持每次查询数据库的当前解决方案吗?
要明确的是,我仍然会将信息存储在数据库中,这个问题只是询问临时存储,以便在整个会话期间快速访问。
我已经查看了以下问题,但我仍然觉得我没有得到我的特定情况的答案,并且关闭的问题没有提到过。
答案 0 :(得分:3)
我采取的方法可能是这样的:
Think twice about using session state - 建议不要将会话状态用于用户个人资料数据。
当然,上述内容并未考虑可能需要的任何其他营销要求。因此,您可能需要根据需要调整此策略。例如,如果您需要更新产品信息的速度超过缓存通常会过期的速度,您可能会考虑首先更新数据库中的产品数据的方法,如果成功,则会在缓存上获取写锁定并更新缓存,太。这将允许近乎实时的缓存更新,而不必从数据库中使缓存无效并重新加载。