所以我有一个基于每个用户的站点,并且它应该查询一个非常大的数据库,并翻阅结果。由于返回的条目数量的大小,我运行一次查询(这需要一些时间......),将结果存储在全局中,然后让人们根据需要迭代结果(或下载它们)。 / p>
当然,这不是可扩展的,因为全局变量是跨会话共享的。在Django中执行此操作的正确方法是什么?我查看了会话管理,但我总是遇到" xyz不能在json"上进行序列化。问题。我是否正在研究如何使用会话正确地执行此操作,还是有其他首选方法可以执行此操作?
答案 0 :(得分:1)
如果用户正在翻阅结果,您可能不希望退回并进行渲染,而不是必须。大多数SQL方言都有TOP
和LIMIT
条款,只要您的数据一致排序,就可以撤回有限范围的结果。 Django的Pagination类是Django Model类的一个很好的抽象:https://docs.djangoproject.com/en/dev/topics/pagination/
我会小心在用户会话中存储大量数据,因为它不会随着用户数量的增长而扩展,用户会话可以在用户离开网站后保持一段时间。如果您已设置此选项,请务必阅读有关清除过期会话的信息。 Django不会为你做这件事: https://docs.djangoproject.com/en/1.7/topics/http/sessions/#clearing-the-session-store