当前位置:  开发笔记 > 编程语言 > 正文

Django Sessions

如何解决《DjangoSessions》经验,为你挑选了3个好方法。

我正在查看Django中的会话,默认情况下它们存储在数据库中.文件系统和缓存会话有什么好处,我应该在什么时候使用它们?



1> Andrew Wilki..:

如果您不打算将数据库用于系统的任何其他部分,则只需查看文件系统后端.如果您使用的是数据库,则文件系统后端无需推荐它.

memcache后端比数据库后端快得多,但是您可能会遇到清除会话并且某些会话数据丢失的风险.

如果你是一个非常,非常高流量的网站和代码,所以你可以应付失去一个会话然后使用memcache.如果您不使用数据库,请使用文件系统缓存,但几乎在所有情况下,默认数据库后端都是最好,最安全和最简单的选项.



2> Will Harris..:

我不是Django的专家,所以这个答案一般都是关于会话商店的.如果我错了,就投票.

性能和可伸缩性

会话存储的选择会影响性能和可伸缩性.如果您有一个非常受欢迎的应用程序,这应该只是一个大问题.

数据库和文件系统会话存储都(通常)由磁盘支持,因此您可以廉价地拥有大量会话(因为磁盘很便宜),但是请求通常必须等待数据被读取(因为磁盘很慢).Memcached会话使用RAM,因此支持相同数量的并发会话将花费更多(因为RAM很昂贵),但可能更快(因为RAM很快).

文件系统会话与运行应用程序的框相关联,因此如果您的站点变得庞大,则无法在多个应用程序服务器之间进行负载平衡.通过数据库和memcached会话,您可以让多个应用程序服务器与共享会话存储进行通信.

简单

会话商店的选择也会影响部署网站的容易程度.改变默认值会花费一些复杂性.Memcached和RDBMS都有自己的复杂性,但你的应用程序可能会使用RDBMS.

除非你有一个非常受欢迎的应用程序,简单性应该是更大的问题.

奖金

另一种方法是将会话数据存储在cookie中(所有这些,而不仅仅是ID).这具有会话存储自动随用户数量而扩展的优点,但它也有缺点.您(或您的框架)需要小心阻止用户伪造会话数据.您还需要保持每个会话较小,因为整个事件将随每个请求一起发送.



3> Anthony Batc..:

从Django 1.1开始,您可以使用cached_db会话后端.

这会将会话存储在缓存中(仅与memcached一起使用),并将其写回数据库.如果它已从缓存中删除,它将从数据库中读取.

虽然这比仅使用memcached存储会话要慢,但它会为会话增加持久性.

有关更多信息,请参阅:Django Docs:使用缓存会话

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有