![]() |
1
19
将数据存储在数据库、cookie或其他不直接占用Web服务器内存的方法中。 除了加载之外,会话还提出了使用服务器场的能力问题,因为您要么需要在服务器场之间同步会话,要么使会话具有粘性,这可能会影响可伸缩性。 |
![]() |
2
6
对于备选方案,您可以阅读本文 Nine Options for Managing Persistent User State in Your ASP.NET Application . 在文章中,作者解释了每种方法的优缺点。 总结如下:
|
![]() |
3
4
会话数据存储在服务器的RAM中,如果您有一个流量很高的站点,它将非常快地完全填满,而您最不想要的就是将数据交换到磁盘上。 正如Gaijin42所说,曲奇或数据库是另一种选择。 |
![]() |
4
4
会话作为一种状态存储方法在高流量系统中很难实现,原因有几个。 首先,默认的会话存储方法正在进行中,这意味着如果您有一个负载平衡的Web场,当用户从不同的服务器获取服务页面时,您将不断地“丢失”会话信息。 当应用程序池被回收时,进程内会话服务器也会死亡,这在流量较高的服务器上更常见。 会话数据的可伸缩性选项包括
一般来说,由于会话数据的性质,对于流量非常大的站点来说,这两者都不是一个很好的选择(除非您有无限的资金投入硬件)。 |
![]() |
5
2
对于高流量的网站,您可能会看到memcached。它是一种缓存机制,存储在远程计算机的RAM中。就在最近,一个win32端口被建立在这个库中(以前只有linux才有可能)。 |
![]() |
6
1
我不会重复这里已经提到的内容,但另一种选择是使用应用程序哈希。应该谨慎地使用它,因为它会像亚当已经提到的那样消耗Web服务器上的内存,但是它确实提供了一种好的方法来缓存在所有用户中常见的东西。 这使您不必返回数据库来检索其他人可能已经要求的信息。 另一个类似于应用程序的选择是缓存,它在释放时间、持续时间等方面具有更大的灵活性。 以下是一些链接,以防您感兴趣: ASP NET Caching Application State |
![]() |
7
1
我们将数据库用于任何高流量或将导致大会话状态的情况。相反,我们在实际的sessionstate中存储一个指向数据库记录的指针。那么,我们唯一的开销就是Web服务器和数据库服务器之间的带宽,这将远远小于任何给定用户和Web服务器之间的带宽。 |
![]() |
Haim Ohayon · 这些链接之间有什么区别? 2 年前 |