在文件与数据库中存储会话数据的优缺点是什么?

San*_*ing 6 php ruby python asp.net ruby-on-rails

在构建网站时,必须决定在用户​​登录时如何存储会话信息.

将每个会话存储在自己的文件中与将其存储在数据库中的优缺点是什么?

Ada*_*SFT 3

我通常不会将这些信息存储在文件中 - 您可能会冒着将该文件交换进内存和交换出内存的风险(是的,它有时可能会被缓存),但我宁愿使用这样设计的内存机制,然后您就可以了使用相当不标准的东西。在 ASP.NET 中

  1. 您可以在内存集合中使用,这非常适合在单个服务器上使用。如果您需要多个负载平衡的 Web 服务器(网络场),并且用户在处理每个请求时可以转到任何其他服务器,那么此选项并不好。如果 Web 进程重新启动,会话就会丢失。他们也可以超时。

  2. 您可以使用 asp.net 中的状态服务器进行多服务器访问 - 这在您的 Web 服务器进程之外运行。如果 Web 进程重新启动 - 则一切正常,并且多个服务器可以访问该进程。发送到状态服务器的流量未加密,理想情况下您可以使用 IPSEC 策略在更安全的环境中保护流量。

  3. 您可以通过将 web.config 设置为使用 sql server 作为会话数据库来使用 sql server 来(自动)管理状态。这提供了高性能数据库和多服务器访问的优势。

  4. 如果您需要它们在正常机制之外持续很长时间并且希望对数据库字段进行更严格的控制(也许您想查询特定字段),您可以在数据库中使用自己的会话

也只是出于好奇 - 也许您将会话称为用户首选项?在这种情况下,研究 asp.net 配置文件