kittycat_13 Asked:2020-10-31 21:31:32 +0000 UTC2020-10-31 21:31:32 +0000 UTC 2020-10-31 21:31:32 +0000 UTC 为什么要缓存会话数据?[关闭] 772 你好!你能解释一下为什么缓存会话数据吗?我明白为什么要缓存来自数据库的一些请求,但我不明白为什么要缓存会话数据。 кэширование 2 个回答 Voted Best Answer Barmaley 2020-10-31T22:45:44Z2020-10-31T22:45:44Z 要了解为什么要缓存会话数据,您需要深入了解。会话的实现取决于具体的服务器,但通常使用两种方法: 为每个会话创建一个文件 为每个会话创建一个数据库条目。 例如,Java 开发人员钟爱的 Tomcat 服务器实现了这两种机制。在数据库的情况下,会话表如下所示: create table tomcat_sessions ( session_id varchar(100) not null primary key, valid_session char(1) not null, max_inactive int not null, last_access bigint not null, app_name varchar(255), session_data mediumblob, //переменные сессии здесь KEY kapp_name(app_name) ); 对于 WebLogic,它看起来像这样: create table wl_servlet_sessions ( wl_id VARCHAR2(100) NOT NULL, wl_context_path VARCHAR2(100) NOT NULL, wl_is_new CHAR(1), wl_create_time NUMBER(20), wl_is_valid CHAR(1), wl_session_values LONG RAW, //переменные сессии здесь wl_access_time NUMBER(20), wl_max_inactive_interval INTEGER, PRIMARY KEY (wl_id, wl_context_path) ); 现在自己回答这个问题——如果会话仍然是数据库中的一条记录,或者更糟的是一个外部文件——它是否应该被缓存?答案对我来说似乎很明显。 Alex 2020-10-31T21:48:28Z2020-10-31T21:48:28Z 如果一些会话变量很少改变,但是你经常需要读取它们,那么这些变量有时会写在 memcached 中以获得更快的访问,但总的来说这种方法并不完全正确,如果你文盲使用它,那么与其提高性能,你可以得到相当明显的错误。简而言之,他们在会话中缓存静态数据,并在严格控制下谨慎执行,并为性能的小幅提升而执行此操作。当然,如果我们指的是网络,我想在问题中提供更多细节
要了解为什么要缓存会话数据,您需要深入了解。会话的实现取决于具体的服务器,但通常使用两种方法:
例如,Java 开发人员钟爱的 Tomcat 服务器实现了这两种机制。在数据库的情况下,会话表如下所示:
对于 WebLogic,它看起来像这样:
现在自己回答这个问题——如果会话仍然是数据库中的一条记录,或者更糟的是一个外部文件——它是否应该被缓存?答案对我来说似乎很明显。
如果一些会话变量很少改变,但是你经常需要读取它们,那么这些变量有时会写在 memcached 中以获得更快的访问,但总的来说这种方法并不完全正确,如果你文盲使用它,那么与其提高性能,你可以得到相当明显的错误。简而言之,他们在会话中缓存静态数据,并在严格控制下谨慎执行,并为性能的小幅提升而执行此操作。当然,如果我们指的是网络,我想在问题中提供更多细节