【发布时间】:2015-12-06 11:43:49
【问题描述】:
我的网站提供的页面几乎是静态的,并且没有登录用户等。
出于性能原因,我想完全禁用会话(因此 django 不会访问数据库以获取每个请求的会话)。
我从 INSTALLED_APPS 中删除了django.contrib.sessions,我还需要做什么吗?
【问题讨论】:
标签: python django django-sessions
我的网站提供的页面几乎是静态的,并且没有登录用户等。
出于性能原因,我想完全禁用会话(因此 django 不会访问数据库以获取每个请求的会话)。
我从 INSTALLED_APPS 中删除了django.contrib.sessions,我还需要做什么吗?
【问题讨论】:
标签: python django django-sessions
您应该根据此类文章找到如何在 django 中设置会话并从 settings.py 中删除所有内容的文章。 Here is it:
虽然这应该已经设置并正常工作,但它是 尽管如此,了解哪些 Django 模块提供哪些的好习惯 功能。在会话的情况下,Django 提供了中间件 实现会话功能。
要检查一切是否正常,请打开 Django 项目的 设置.py 文件。在文件中,找到 MIDDLEWARE_CLASSES 元组。你应该找到 django.contrib.sessions.middleware.SessionMiddleware 模块列为 元组中的字符串 - 如果不这样做,现在将其添加到元组中。它是 SessionMiddleware 中间件,它可以创建独特的 sessionid cookie。
SessionMiddleware 旨在以不同的方式灵活工作 存储会话信息。有很多方法可以 采取 - 您可以将所有内容存储在文件、数据库中,甚至 在缓存中。最直接的方法是使用 django.contrib.sessions 应用程序将会话信息存储在 Django 模型/数据库(特别是模型 django.contrib.sessions.models.Session)。要使用这种方法,您将 还需要确保 django.contrib.sessions 在 Django 项目的 settings.py 文件的 INSTALLED_APPS 元组。如果你 现在添加应用程序,你需要同步你的数据库 使用 python manage.py syncdb 命令将新表添加到 你的数据库。
看来您也应该删除中间件。也许没有必要,但如果你使用的是静态应用程序,那么根据会话删除所有内容并没有那么糟糕。
【讨论】:
SessionMiddleware:docs.djangoproject.com/en/1.8/topics/http/sessions。它应该会节省一些开销。